博客
关于我
查找元素
阅读量:807 次
发布时间:2019-03-26

本文共 1748 字,大约阅读时间需要 5 分钟。

在n个整数中查找m出现的位置,如果出现多次,则依次输出。如果没有找到,输出Not Found。

输入格式

输入包括两行:

第一行:n(0 < n ≤ 10000)和n个整数。第二行:m

输出格式

输出m在n个整数中出现的位置。如果出现多次则均输出。如果没有找到,输出Not Found。


示例输入

8 3 1 23 8 3 10 7 33

示例输出

1 5 8


问题分析

我们需要在给定的整数序列中查找特定值m的位置。如果m在序列中出现多次,则需要依次输出所有位置。如果m没有在序列中出现,则输出Not Found。

数据结构选择

为了高效查找和记录m的位置,我们可以使用数组或栈。这里可以选择数组,因为它能够直接记录每个整数的位置。

程序流程

  • 初始化数组:创建一个数组来记录每个整数的位置索引。
  • 输入处理:读取n和m的值,然后读取n个整数。
  • 遍历数组:对于每个整数,如果它是m,记录当前索引。遍历完成后,输出所有索引。
  • 检查结果:如果有找到记录,则输出所有索引;否则,输出Not Found。
  • 样例代码

    以下是实现该功能的C代码:

    #include 
    #include
    int main(void) { int n, m; // 初始化一个大小为n的数组,记录每个整数的位置 char positions[n][10]; // 假设整数最大为1000 int dup_pos = -1; // 记录是否有重复 int i, j; scanf("%d", &n); // 读取n个整数 for (i = 0; i < n; ++i) { char num[10]; scanf("%d", num); if (memcmp(num, &m, 10) == 0) { // 记录每次出现的位置索引 if (positions[dup_pos] != 0) { // 上一次出现的位置是在数组中的哪一行? // 这里使用`sprintf`将索引转为字符串后拼接到`positions`数组中 char pos[5]; sprintf(pos, "%d", i); strcat(positions[dup_pos], pos); strcat(positions[dup_pos], " "); } else { // 拼接当前索引 sprintf(pos, "%d", i); strcat(positions, pos); strcat(positions, " "); } dup_pos++; } } // 输出结果 if (positions != 0) { printf("%s\n", positions); } else { printf("Not Found\n"); } return 0;}

    代码解释

  • 初始化数组char positions[n][10]; 用于记录每个整数的位置索引。
  • 读取输入:读取n和m的值。
  • 遍历检查:对于每个整数,比较是否等于m。如果等于,记录当前索引。
  • 拼接结果字符串:使用strcat拼接结果字符串,形成多个位置索引的字符串。
  • 输出结果:根据是否找到m,输出结果字符串或Not Found。
  • 优化建议

    如果m的值范围较大,使用哈希表(如unordered_map)可能会更高效,但对于n≤10000的情况,数组方法已经足够快。如果使用栈结构,数据会被逆序存储,最后需要倒序访问索引,增加了复杂度。因此,使用数组是最优的选择。

    转载地址:http://nhhyk.baihongyu.com/

    你可能感兴趣的文章
    mysql与mem_细说 MySQL 之 MEM_ROOT
    查看>>
    MySQL与Oracle的数据迁移注意事项,另附转换工具链接
    查看>>
    mysql丢失更新问题
    查看>>
    MySQL两千万数据优化&迁移
    查看>>
    MySql中 delimiter 详解
    查看>>
    MYSQL中 find_in_set() 函数用法详解
    查看>>
    MySQL中auto_increment有什么作用?(IT枫斗者)
    查看>>
    MySQL中B+Tree索引原理
    查看>>
    mysql中cast() 和convert()的用法讲解
    查看>>
    mysql中datetime与timestamp类型有什么区别
    查看>>
    MySQL中DQL语言的执行顺序
    查看>>
    mysql中floor函数的作用是什么?
    查看>>
    MySQL中group by 与 order by 一起使用排序问题
    查看>>
    mysql中having的用法
    查看>>
    MySQL中interactive_timeout和wait_timeout的区别
    查看>>
    mysql中int、bigint、smallint 和 tinyint的区别、char和varchar的区别详细介绍
    查看>>
    mysql中json_extract的使用方法
    查看>>
    mysql中json_extract的使用方法
    查看>>
    mysql中kill掉所有锁表的进程
    查看>>
    mysql中like % %模糊查询
    查看>>