查找特定的值

GitHub跳转原题关系图返回列表

用列表 index 查找目标值的首次位置,不存在时输出 -1。

OJ: noi_openjudge

题目 ID: ch0109-01

难度:入门

标签:数组查找python

日期: 2026-07-30 23:01

题意

在下标从 11 开始的整数序列中,输出给定值第一次出现的位置。

思路

先用 target in numbers 判断存在性,再用 index 得到零基下标并加一;不存在时输出 -1

代码

cpp
#include <cstdio>
using namespace std;

int n,x;
int a[10005];
int main(){
    scanf("%d",&n);
    int i,j;
    for (i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    scanf("%d",&x);
    for (i=1;i<=n;i++){
        if( a[i] == x){
            printf("%d\n",i);
            return 0;
        }
    }
    printf("-1");
    return 0;
}

复杂度

时间复杂度为 O(n)O(n),序列空间为 O(n)O(n)

总结

题目下标与 Python 下标不同,输出前要完成一次加一转换。

Python代码

python
count = int(input())
numbers = list(map(int, input().split()))
target = int(input())
print(numbers.index(target) + 1 if target in numbers else -1)

C++代码

cpp
#include <cstdio>
using namespace std;

int n,x;
int a[10005];
int main(){
    scanf("%d",&n);
    int i,j;
    for (i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    scanf("%d",&x);
    for (i=1;i<=n;i++){
        if( a[i] == x){
            printf("%d\n",i);
            return 0;
        }
    }
    printf("-1");
    return 0;
}