一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。(高效率)
来源:互联网 发布:apache 开源协议 编辑:程序博客网 时间:2024/05/20 06:27
这样的矩阵可以使用一个二维数组存储,知道了矩阵的特点,选取一个元素时可以将矩阵分区
可以看到随意选一个元素的话会分成四个区域,阴影部分是可能的区域,深色的是确定比要查找的大或者小,浅色阴影是有可能,所以下一步的动作很难确定,因此,随意取一个点进行比较然后跟进的方式会很麻烦。
从特殊位置的点下手这个问题就变得简单了,右上和左下这两个点拿来比较要找的元素就很好处理,这里采用取右上元素的方式(两种思想相同):
要查找的元素与右上的元素比较,若比要查找的元素大,那这一列的元素都大可以排除,故将其左移;若小了,则排除这一行的元素,将其下移,每次都可以排除一列或一行的元素;最多m+n-1次就可以判断出是否存在
代码实现如下
bool Find(int* matrix, int rows, int columns, int number){ if (matrix!=NULL && rows>0 && columns>0) { bool found = false; int row = 0; int column = columns-1; while (row<rows && column>=0) { if (matrix[row * columns + column] == number) { found = true; break; } else if(matrix[row * columns + column] > number) column--; else row++; } return found; }}
阅读全文
0 0
- 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。(高效率)
- 判断平衡二叉树/二叉树镜像/一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中
- 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高。
- 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高
- 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高。
- 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高
- 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。
- 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中
- 矩阵找数--一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高。
- 判断二叉树平衡/求二叉树的镜像 附属: 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中
- 在一个从左到右从上到下都是递增的m*n的矩阵中找一个数x
- 一个矩阵,从左到右递增,从上到下递增,从这个矩阵中找某个数
- 求一个从左到右从上到下矩阵中,寻找一个给定的数是否存在
- 用分治算法确定一个给定的数x是否在矩阵M中
- 杨氏矩阵:有一个二维数组,数组的每行从左到右都是递增的,每列从上到下都是递增的,从这样的数组中查找一个数字是否存在
- 有一个二维数组.----杨氏矩阵 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
- 设M 是一个m×n 的矩阵,其中每行的元素从左到右单增有序,每列的元素从上到下单增有序。 给出一个分治算法计算出给定元素x 在M 中的位置或者表明x 不在M 中。分析算法的时间复杂性。
- 在一个每一行从左到右递增每一列从上到下递增的二维数组中查找一个整数是否存在
- python-数字 字符串 列表的转换
- LeetCode 383 Ransom Note
- Unity 基础常用的脚本(一)
- C/C++之常用字符串比较总结
- Java中对象的赋值与引用
- 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。(高效率)
- Elasticsearch查询
- JS控制图片滚动的效果
- 复制文件
- padding margin 区别
- Camera基础概念
- IDEA Maven-Helper插件
- Zedboard中的SPI通信记录文档(已实现)
- 定时清理过期的topic和queue