剑指offer面试题3 在一个每一行递增 且每一列递增的二维数组中查找一个数
来源:互联网 发布:淘宝上的古董店 编辑:程序博客网 时间:2024/05/18 01:25
//FindInPartiallySortedMatrix//题目意思是 给一个矩阵 这个矩阵的每一行都是有序 递增的//并且每一列都是有序 递增的 要在这个矩阵中查找一个值//分析思路 如果随机选一个数比要找的小 那肯定是在右方或下方。这样不方便。还有重叠区域//就应该找特殊点 比如上下左右 四个点 左上一直是最小 没什么价值 右下一直是最大。。//现在想右上 的数它是一行中最大的 一列中最小的 也就是说 如果要查找的数比它小 肯定不在那一列 比他大 肯定不再那行//这样我们每次都可以排除一行 或者一列。直到只剩下一个元素 不相等的话 就没找到。//时间复杂度是O(n+m)#include<iostream>#include<cstdio>using namespace std;const int maxn=100;int arr[maxn][maxn],n,m;void init(){ scanf("%d %d",&n,&m); for(int i=0;i<n;++i) for(int j=0;j<m;++j) scanf("%d",&arr[i][j]);}void showarr(){ for(int i=0;i<n;++i) { for(int j=0;j<m;++j) cout<<arr[i][j]<<" "; cout<<endl; }}bool Find(int a)//标记xpos ypos 为要查找区域的右上角。{ int xpos = 0;//初始化未右上角 一开始写错 写成右下角了 int ypos = m-1; while(xpos<n && ypos>=0)//x是在向下 增大 y是在向左 减小 { if(a==arr[xpos][ypos]) return true; else if(a<arr[xpos][ypos]) ypos--; else xpos++; } return false;}int main(){ freopen("/home/gl/in","r",stdin); init(); showarr(); int num; while(scanf("%d",&num)!=EOF) { printf("searching %d ",num); if(Find(num)) printf("Find\n"); else printf("Not find\n"); } return 0;}
- 剑指offer面试题3 在一个每一行递增 且每一列递增的二维数组中查找一个数
- 在一个每一行从左到右递增每一列从上到下递增的二维数组中查找一个整数是否存在
- 在一个每一行从左到右递增每一列从上到下递增的二维数组中查找一个整数是否存在——3
- 在一个二维数组中,每一行都从左到右递增,每一列都从上到下递增,在这样一个数组里查找一个数
- C语言:【面试题】在二维数组中,每行每列都按照递增的顺序排序,判断数组中是否包含一个数。
- 二维数组中查找一个数,该二维数组是 行和列递增的
- 在一个二维数组中查找一个数,这个数组的行和列都是以递增形式存储的
- java 剑指offer 第一题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 在一个按行列递增的二维数组中查找一个数是否存在
- 有一个二维数组杨氏矩阵,数组的每行从左到右是递增的,每列从上到下是递增的,在这样的数组中查找一个数字是否存在
- 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N)
- 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
- 有一个二维数组.----杨氏矩阵 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
- //杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。
- 牛客网剑指offer—题目一在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
- 行递增、列递增的二维数组中查找
- 杨氏矩阵:有一个二维数组,数组的每行从左到右都是递增的,每列从上到下都是递增的,从这样的数组中查找一个数字是否存在
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
- FileZilla FTP服务器源代码分析07
- 剑指offer面试题2 Singleton 模式 三种方法,设计多线程 同步锁
- MVP模式
- iBatis异常
- 专题4-4.C语言中的字符串(国嵌C语言视频)
- 剑指offer面试题3 在一个每一行递增 且每一列递增的二维数组中查找一个数
- 将程序关联成Android系统默认打开程序
- 单片机程序设计基础(修订版)
- 字符串面试题
- Floyd算法
- FileZilla FTP服务器源代码分析09
- bootstrap fluid affix
- 脚本查看linux 密码更改日期和账户失效日期
- Java随机生成字母