3.2 查找

例题3.4 找x(哈工大复试上机题)

找x_牛客题霸_牛客网 (nowcoder.com)

1、思路

  • 简单题,定义一个数组存储输入的数字,定义一个flag标识是否找到x,对数组进行一次遍历,找到就输出x的下标,修改flag。遍历结束检查flag,未找到输出-1。

2、总结

  • 解析中直接将flag设置为-1,若找到就把下标赋值给flag,否则直接输出flag,更方便。

3、源代码

#include <stdio.h>int main() {int n,x;int flag = 0; // 标志是否找到x,默认没找到scanf("%d\n",&n);int a[n];for ( int i = 0 ; i < n ; i++) {scanf("%d ",&a[i]);}scanf("%d\n",&x);for ( int i = 0 ; i < n ; i++) {if (a[i] == x) {printf("%d\n",i);flag = 1;}}if (flag == 0) printf("-1");}

例题3.5 查找(北邮复试上机题)

查找_牛客题霸_牛客网 (nowcoder.com)

1、思路:线性查找

  • 定义两个数组,原始数据存入a数组,要查找的数据存入s数组。
  • 遍历s数组,嵌套遍历a数组,依次检查s数组中的元素a数组中是否存在。(注意顺序,外层循环一定是遍历s数组)

2、其他解答

  • 解答用的是二分查找,我的方法只适用于数据量和查询次数比较小的情况,如果数据量和查询量都比较大,仍采用线性查找,会导致超时。
  • 二分查找的适用范围:有序的线性表,因此一定要对a数组进行排序。
  • 书上还提到了溢出的问题:
    int mid = (low + high)/2

    这句通常方便理解。但是当low和high非常接近整型最大值时,如果再用这个表达式就会出现溢出问题,此时就应该用下面这句来代替。二者的功能等价,并且后者不会出现溢出问题。

    int mid = low + (high - low)/2

3、源代码

// version 1:线性查找,适合数据量和查询量较小
#include <stdio.h>int main() {int n,m;scanf("%d\n",&n);int a[n];for (int i = 0 ; i < n ; i++) {scanf("%d ",&a[i]);}scanf("%d\n",&m);int s[m];for (int i = 0 ; i < m ; i++) {scanf("%d ",&s[i]);}for (int i = 0 ; i < m ; i++) {int flag = 0; // 找到的标志for ( int j = 0 ; j < n ; j++) {if ( s[i] == a[j] ) {printf("YES\n");flag = 1;break;  // 必须要有,否则只能通过2个测试用例}}if(flag == 0) printf("NO\n");}
}
// version 2 :二分查找,适用于有序的线性表
#include <iostream>
#include <algorithm>using namespace std;// 二分查找,适用于有序的线性表
bool binarySearch(int a[], int len, int x) {int low = 0, high = len - 1;int mid;while ( low <= high ) {mid = (low + high) / 2;if (a[mid] == x)  // 找到xreturn true;else if (a[mid] > x)  // 中间的值比x大,在左半子表查找high = mid - 1;elselow = mid + 1;  // 中间的值小于等于x,在右半子表查找}return false;  // 没有找到x
}int main() {int n, m;scanf("%d\n", &n);int a[n];for (int i = 0 ; i < n ; i++) {scanf("%d ", &a[i]);}// 一定要记得先排序sort(a,a+n);scanf("%d\n", &m);int s[m];for (int i = 0 ; i < m ; i++) {scanf("%d ", &s[i]);}for (int i = 0 ; i < m ; i++) {if (binarySearch(a,n,s[i])) printf("YES\n");elseprintf("NO\n");}
}

王道计算机考研机试指南自用刷题笔记-自用5相关推荐

  1. 王道计算机考研机试指南二刷笔记-自用8

    目录 写在开头 第3章 排序与查找 3.1 排序 总结 3.2 查找 总结 写在开头 一刷到后面断更了,发现每题都写太浪费时间了. 一刷总结:数学问题.贪心.递归分治.数据结构二基本都刷完了,图论只刷 ...

  2. 王道计算机考研机试指南刷题笔记-自用

    | 写在开头 前两周磨磨唧唧把第二章暴力求解枚举部分的例题和习题都AC了,思路都不太难,找到规律很快就能写出来,想着一定要写刷题笔记,把coding时遇到的困难都记录下来,方便以后复习,却也一直未曾动 ...

  3. 王道出版的机试指南_王道论坛计算机考研机试指南 四 排版题

    例2.7 输出梯形 (九度教程第14题) 时间限制:1秒 **内存限制:32兆 ** 特殊判题:否 题目描述: 输入一个高度h,输出一个高为h,上底边为h的梯形. 输入: 一个整数h(1<=h& ...

  4. 王道计算机考研机试指南自用刷题笔记-自用6

    目录 习题3.5 找最小数(北邮复试上机题) 习题3.6 打印极值点下标(北大复试上机题) 习题3.7 找位置(华科复试上机题) 第4章 字符串 4.1 字符串 4.2 字符串处理 4.1 特殊乘法( ...

  5. 王道计算机考研机试指南刷题笔记-自用7

    目录 例题4.4 统计字符(浙大复试上机题) 例题4.5 字母统计(上交复试上机题) 第5章 数据结构一 5.1 向量 例题5.1 完数与盈数(清华复试上机题) 5.2 队列 例题5.2 约瑟夫问题N ...

  6. 王道计算机考研机试指南刷题笔记-自用3

    | 2.2 模拟 3.其他模拟 例题2.9 KY25(清华大学复试上机题) 剩下的树__牛客网 (nowcoder.com) 1.总结 遇到的坑:直接把给出的区间右端点值减去左端点值+1得到这个区间移 ...

  7. 王道出版的机试指南_《王道论坛计算机考研机试指南》试读版.pdf

    <王道论坛计算机考研机试指南>试读版 王道论坛 王道论坛计算机考研机试指南 王道论坛 2013.01.06 写在前面的话 各位王道的小崽子们,今天你们考完初试了,感觉解放了吧?轻松了吧?无 ...

  8. 计算机考研机试指南(八)——数学问题

    机试指南 cha4 数学问题 % 1 #include <iostream> 2 #include <stdio.h> 3 #include <stdlib.h> ...

  9. 王道论坛计算机考研机试指南怎么样,王道论坛计算机考研机试指南 二 日期类问题...

    二日期类问题 例2.3 日期差值 (九度教程第6题) 时间限制:1秒 **内存限制:32兆 ** 特殊判题:否 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数 ...

最新文章

  1. 开源数据库技术分享及未来展望|CIC 真·全明星阵容
  2. 数据库必会必知 之 SQL四种语言:DDL DML DCL TCL
  3. 用python编写图片生成器_python生成器
  4. linux常用命令总结
  5. Linux文件服务器实战(系统用户)
  6. 敏捷与安全不可兼得吗?看完这篇文章后,我想说:未必!
  7. 使用Python为中秋节绘制一块美味的月饼
  8. php foreach是什么,php foreach用法是什么
  9. 基于微信小程序的毕业设计题目(24)php食堂餐厅就餐预约小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
  10. 继续:Racket网络编程
  11. 国外天气预报接口 全球热门城市7天天气预报接口
  12. 前端插件:雪碧图(多图压缩为一张)
  13. 错过了淘宝、拼多多,今年的电商风口抖音小店无货源你能抓住吗?
  14. 【Vue基础七】--- 组件和模块概念
  15. mysql rls_各种类型RLS自适应滤波算法的C++实现
  16. MTK9652处理器怎么样
  17. 基于硬件的消息队列中间件 Solace 简介之二
  18. BINARY和VARBINARY类型的区别
  19. 高等数学下册学习笔记(二)
  20. python mysql连接池 知乎_使用python脚本部署mariadb主从架构

热门文章

  1. 解决wordpress上传文件大小限制
  2. 4.14-1 图片太大遇到的问题,Bitmap too large to be uploaded into a texture (2340x4160, max=4096x4096)
  3. 跟着 Cell 学作图 | 桑葚图(ggalluvial)
  4. js获取域名:location.origin
  5. QQ汉字验证码原理(C#随机中文汉字验证码)
  6. 如何获取交通态势数据(上)
  7. 解压hotfile下载下来大文件方法(for Atlassian)
  8. apax—apache扩展工具
  9. Qt5.7.0 msvc 32bit 的QML程序部署到xp系统
  10. swiper多张轮播图显示分页器,一张不显示