题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
class Solution: def Find(self, target, array): # write code here # 主要思路:首先选取右上角的数字,如果该数字大于target,则该列全大于target,删除该列; # 如果该数字小于小于target,则该列全小于target,删除该行。 found = False #初始化 row= len(array)#求行的长度 if row: col = len(array[0])#列的长度 else: col = 0 if(row>0 and col>0): i=0 j=col-1 while(i<row and j>=0):#循环查找 if array[i][j] == target: found = True break elif array[i][j] > target: j -= 1 elif array[i][j] < target: i += 1 return found
class Solution: def Find(self, target, array): for row in range(len(array)):#遍历所有的数进行比较查找 arr = array[row] # 对于每一行(一维数组),在这个一维数组中查找target。 for index in range(len(array[0])): if arr[index] == target: return True return False
c++代码
//解题思路: //遍历所有的数 #include<iostream> #include<vector> using namespace std; class Solution { public: bool Find(int target, vector<vector<int> > array) { int rowNum = array.size(); int colNum = array[0].size(); for (int i = 0; i<rowNum; i++) for (int j = 0; j<colNum; j++) { if (target == array[i][j]) return 1; } return 0; } }; int main(){ vector<vector<int> > array = { { 1, 2, 8, 9 }, { 2, 4, 9, 12 }, { 4, 7, 10, 13 }, { 6, 8, 11, 15 } }; int target = 19; bool a = Solution().Find(target, array); cout << a << endl; system("pause"); return 0; }