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=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
#include
using namespace std;
class Solution {
public:
bool Find(int target, vector > array)
{
int rowNum = array.size();
int colNum = array[0].size();
for (int i = 0; i
for (int j = 0; j
{
if (target == array[i][j])
return 1;
}
return 0;
}
};
int main(){
vector > 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;
}