矩阵

二维数组中的查找

扶醉桌前 提交于 2020-03-01 05:55:29
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 法一:两个for循环,o(n^2),直接查找。代码如下: 1 public boolean Find(int target, int[][] array) { 2 boolean flag = false; 3 for(int i = 0; i < array.length; i++) { 4 for(int j = 0; j < array[i].length; j++) { 5 if(target == array[i][j]) { 6 flag = true; 7 break; 8 } 9 } 10 } 11 return flag; 12 } View Code 法二:外层for循环,内层二分,o(nlogn)。代码如下: 1 public boolean Find(int target, int[][] array) { 2 if(array.length == 0 || array[0].length == 0) { 3 return false; 4 } 5 boolean flag = false; 6 int left, right, mid, len = array.length; 7

算法:二维数组中的查找

拈花ヽ惹草 提交于 2020-03-01 05:55:02
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 C++11实现 #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; bool Find(vector<vector<int> > array,int target) { int rowCount = array.size(); int colCount = array[0].size(); int i,j; for(i=rowCount-1,j=0; i>=0&&j<colCount;) { if(target == array[i][j]) return true; if(target < array[i][j]) { i--; continue; } if(target > array[i][j]) { j++; continue; } } return false; } int main() { int k = 0; string sval; vector<int> sVec; vector<vector<int>> pVec;

二维数组中的查找

喜欢而已 提交于 2020-03-01 05:54:53
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 class Solution { public: bool Find(int target, vector<vector<int> > array) { int rowCount = array.size(); int colCount = array[0].size(); int i,j; for(i=rowCount-1,j=0;i>=0&&j<colCount;){ if(target == array[i][j]) return true; if(target < array[i][j]){ i--; continue; } if(target > array[i][j]){ j++; continue; } } return false; } }; 来源: https://www.cnblogs.com/strawqqhat/p/10602154.html

二维数组中的查找

≡放荡痞女 提交于 2020-03-01 05:53:55
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 # -*- coding:utf-8 -*- class Solution(): # array 二维列表 def Find(self, target, array): # write code here /* 思路 * 矩阵是有序的,从左下角来看,向上数字递减,向右数字递增, * 因此从左下角开始查找,当要查找数字比左下角数字大时。右移 * 要查找数字比左下角数字小时,上移 */ # -*- coding:utf-8 -*- class Solution(): # array 二维列表 def Find(self, target, array): # write code here rows = len(array)-1#行 cols = len(array[0])-1#列 i = rows j = 0 while i >= 0 and j<=cols: if target > array[i][j]: j += 1 elif target < array[i][j]: i -= 1 else: return True return False if __name__ == '_

二维数组中的查找

為{幸葍}努か 提交于 2020-03-01 05:51:11
题目描述   在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数   思路:从右至左,从上至下,不断缩小范围比较 class Solution { public: bool Find(int target, vector<vector<int> > array) { if(array.size()==0)return false; if(array[0].size()==0)return false; int row=array.size(); int col=array[0].size(); int m=0; int n=col-1; while(array[m][n]!=target) { if(array[m][n]>target)--n; else ++m; if(m>row-1 || n<0)return false; } return true; } }; 来源: https://www.cnblogs.com/jeysin/p/8064002.html

二维数组中的查找

北慕城南 提交于 2020-03-01 05:49:16
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路 遍历整个二维数组即可 class Solution { public: bool Find(int target, vector<vector<int> > array) { //int arraySize = array.size(); for(int i = 0; i < array.size(); i++){ for(int j = 0; j < array[i].size(); j++){ if(array[i][j] == target) return true; } } return false; } }; 来源: https://www.cnblogs.com/zhousong918/p/10266670.html

剑指offfer:二维数组中的查找

假如想象 提交于 2020-03-01 05:47:35
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成这样一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 例如: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 查找7返回True,查找5返回False -—— - —— - —— - —— - —— - —— - —— - -—— - —— - —— - —— - —— - —— - —— - -—— - —— - —— - —— - —— - —— - —— 分析:选取右上角的元素,若数字 等于 要查找的数字,则查找过程结束;             若 大于 要查找的数字,提出这个数字所在 的列;             若 小于 则提出这个数字所在的行,每一步都可以缩小查找的范围 代码:python 2.7.3 # -*- coding:utf-8 -*- class Solution: # array 二维列表 def Find(self, target, array): # 标识变量 found = False # 检查输入 None,空数组 if array == None: return found nrow=len(array)-1 ncol=len(array[0])-1 row=0 col=ncol while

2.二维数组中的查找

最后都变了- 提交于 2020-03-01 05:46:20
题目: 在一个二维数组中, 每一行都按照从左到右递增的顺序排序 , 每一列都按照从上往下递增的顺序排序 。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 例如下面的二维数组就是每行、每列都是递增排序。如果在这个数组中查找数字7,则返回true,如果查找数组5,由于数组中不含有该数字,则返回false。 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 当我们解决一个问题的时候,一个很有效的方法就是从一个具体的问题入手,通过分析简单具体的例子,试图寻找普遍的规律。 总结查找的过程,我们发现如下规律:首先选取数组中右上角的数字,如果该数字等于要查找的数字,则查找过程结束;如果该数字大于要查找的数字,则剔除这个数字所在的列;如果该数字小于要查找的数字,则剔除这个数字所在的行。也就是说,如果要查找的数字不在数组 的右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。,在前面的分析中,我们每次都是选取数组查找范围内的右上角数字。同样,我们也可以选取左下角的数字。但是我们不能选择左上角数字或者右下角数字,因为这两个方向我们无法缩小查找的范围。 public class FindFromMatrix { private static int[][] sample =

二维数组中的查找

南楼画角 提交于 2020-03-01 05:35:08
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 1  2  8  9 2  4  9  12 4  7  10  13 思路: 根据数组的特性,从右上角开始查找(也可从左下角),若大于,则往下,若小于,则往左。如查找上面数组中的7,从9开始,9>7,往左移一位到8,8>7,再往左移一位到2,2<7,往下移一位到4,4<7,再往下移一位得7==7。 参考代码: public class Solution { public boolean Find(int target, int [][] array) { int row = array.length; int colum = array[0].length; for(int i=0;i<row;i++){ for(int j=colum-1;j>=0;j--){ if (target == array[i][j]){ return true; }else if(target < array[i][j]){ continue; }else{ break; } } } return false; } } 来源: https://www.cnblogs.com/tongkey/p/7989473.html

二维数组中的查找[by Python]

我与影子孤独终老i 提交于 2020-03-01 05:34:11
题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:   首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数组,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。 举例: 如果在一个二维数组中找到数字7,存在则返回True,如果没找到则返回False。 首先,8大于7,下一次只需要在8的左边区域查找;然后,5小于7,下一次只需要在5的下方区域查找;按照这种规则进行查找,如果查找到相同的,则返回True,否则返回False。 Python实现: # -*- python3.6.6 -*- # -*- JluTiger -*- class Solution: # array 二维列表 def Find(self, target, array): # write code here rows = len(array) cols = len(array[0]) if rows >0 and cols >0: row