文章

【GESP】C++三级练习 luogu-B2093 查找特定的值

GESP三级练习,一维数组练习(C++三级大纲中5号知识点,一维数组),难度★☆☆☆☆。

luogu-B2093 查找特定的值

题目要求

题目描述

在一个序列(下标从 $0$ 开始)中查找一个给定的值,输出第一次出现的位置。

输入格式

第一行包含一个正整数 $n$,表示序列中元素个数。$1 \le n \le 10000$。

第二行包含 $n$ 个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过 $10000$。

第三行包含一个整数 $x$,为需要查找的特定值。$x$ 的绝对值不超过 $10000$。

输出格式

若序列中存在 $x$,输出 $x$ 第一次出现的下标; 否则输出 -1

输入输出样例 #1

输入 #1

1
2
3
5
2 3 6 7 3
3

输出 #1

1
1

题目分析

解题思路

  1. 首先需要输入数组长度n和n个整数
  2. 将这些整数存入数组中
  3. 从数组最后一个元素开始向前遍历,依次输出每个元素
  4. 注意输出时每个数字之间需要用空格分隔

复杂度分析:

  • 输入输出操作的时间复杂度为 $O(n)$
  • 遍历数组的时间复杂度为 $O(n)$
  • 因此总时间复杂度为 $O(n)$
  • 空间复杂度为 $O(n)$,需要存储n个整数


示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;
int a[10000];
int main() {
    // 定义数组长度变量
    int n;
    // 定义要查找的数
    int x;
    // 输入数组长度
    cin >> n;
    // 循环输入n个数到数组
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    // 输入要查找的数
    cin >> x;
    // 遍历数组查找x
    for (int i = 0; i < n; i++) {
        // 找到x则输出下标并结束程序
        if (x == a[i]) {
            cout << i;
            return 0;
        }
    }
    // 未找到则输出-1
    cout << "-1";
    return 0;
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页

luogu-”系列题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

bcqm-”系列题目可在编程启蒙题库进行在线评测。

本文由作者按照 CC BY 4.0 进行授权