題目:在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,
輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
題目:在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,
輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
2017080715020726668160.png
思路:從右上角開始查找, 如果該數字等于要查找的數字,查找結束
如果該數字大于要查找的數字,說明當前列不可能存在這個數;
如果小于要查找的數字, 說明當前行不可能存在這個數.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by xuehz on 2017/7/15
class Solution:
def Find(self, array, target):
row = len(array)
column = len(array[0])
if row > 0 and column > 0:
x ,y = 0, column -1 #0,3 找到右上角的數字
while 0 <= x <row and 0 <= y < column:
if array[x][y] == target:
return True
elif array[x][y] > target: # 說明當前列不會有這個數了
y -= 1
elif array[x][y] < target: # 說明當前行不會有這個數了
x += 1
return False
def Find1(self, array, target):
flag = False
# 借助于in
for index in range(len(array)):
if target in array[index]:
flag = True
return flag
if __name__ == '__main__':
array_ = [[1, 2, 8, 9],
[2, 4, 9, 12],
[4, 7, 10, 13],
[6, 8, 11, 15],
]
s = Solution()
print s.Find1(array_, 7)