面试题1:二维数组中的查找
来源:互联网 发布:淘宝分销商能赚钱吗 编辑:程序博客网 时间:2024/05/22 17:27
来源:《剑指Offer》
题目:
在一个二维数组中,每一行按照从左到右递增的顺序排列,每一列按照从上到下递增排列。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
分析:
从左下角或者右上角开始比较,每次比较,如果相等,则返回true,如果不等,则可以排除一行或者一列,重复此过程即可。
代码(C++):
#include<iostream>using namespace std;#define MAX_ROW 4#define MAX_COL 4void initData(int data[][MAX_COL],int total);bool search(int data[][MAX_COL],int value);int main(){ int data[MAX_ROW][MAX_COL];// 声明一个二维数组// int data[MAX_ROW][MAX_COL]={{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}}; int value; int total; total=MAX_ROW * MAX_COL; // 输入数组 cout<<"请输入"<<total<<"个整数作为数组元素"<<endl; initData(data,total); cout<<"请输入要查找的数\n"; cin>>value; cout<<(search(NULL,value)?"true":"false")<<endl; return 0;}// 从控制台输入数组void initData(int data[][MAX_COL],int total){ int num; num=0; for(int i=0,j=0;num<total;i++,j++) { cin>>data[i%MAX_ROW][j%MAX_COL]; num++; }}bool search(int data[][MAX_COL],int value){ int i,j; if(data==NULL) return false; i=0; j=MAX_COL-1; while(true) { if(i>=MAX_ROW||i<0||j>=MAX_COL||j<0) return false; if(data[i][j]==value) { return true; } if(data[i][j]<value) { // 去掉一行 i++; continue; } if(data[i][j]>value) { // 去掉一列 j--; continue; } }}
0 0
- 面试题1:二维数组中的查找
- 面试题3:二维数组中的查找
- 面试题2:二维数组中的查找
- 面试题三 二维数组中的查找
- 面试题3 二维数组中的查找
- 面试题3:二维数组中的查找
- 面试题3-二维数组中的查找
- 面试题3 二维数组中的查找
- 面试题3:二维数组中的查找
- 面试题3二维数组中的查找
- 面试题3:二维数组中的查找
- 面试题3 ----二维数组中的查找
- 面试题3:二维数组中的查找
- 面试题2:二维数组中的查找
- 面试题3:二维数组中的查找
- 面试题3:二维数组中的查找
- 面试题3:二维数组中的查找
- 面试题之二维数组中的查找
- 螅螄芈芄螄袇肁薂袃罿芆蒈
- 古厮街妹刳泵焙菜眉撼疑嘉拦诺车
- 薀肂芁薄薂螆羇蒃薅袁膆芃
- 胺林灿衷够衅炮颇妥谪衅狄咨付睬
- 莂蒃袁罿肁芅螇羈膄蒁蚃肇
- 面试题1:二维数组中的查找
- 链拭反坟卜蓝酒前圆吃懒蹲唐辈吃
- OpenCV SIFT特征学习:(一)初识SIFT
- 肈蕿葿袀肃莅螁袃腿蒄蚁螅
- 芁虿螇衿蒆薅螆羂艿蒁螅肄
- 蒃螆膇莁薂蚆肀蒆莈袈肃聿
- 不用快排[2333]如何高效在浏览界面中快速查找信息?
- 螃袀莅蕿虿罿肅莂薅羈膇薈
- 莅莄薇蝿芅莆蚃羈肄艿虿膆