題目:在一個二維數(shù)組中顾彰,每一行都按照從左到右遞增的順序排序芋酌,每一列都按照從上到下遞增的順序排序增显。請完成一個函數(shù),
輸入這樣的一個二維數(shù)組和一個整數(shù)脐帝,判斷數(shù)組中是否含有該整數(shù)同云。
題目:在一個二維數(shù)組中,每一行都按照從左到右遞增的順序排序堵腹,每一列都按照從上到下遞增的順序排序炸站。請完成一個函數(shù),
輸入這樣的一個二維數(shù)組和一個整數(shù)疚顷,判斷數(shù)組中是否含有該整數(shù)旱易。
2017080715020726668160.png
思路:從右上角開始查找, 如果該數(shù)字等于要查找的數(shù)字,查找結(jié)束
如果該數(shù)字大于要查找的數(shù)字腿堤,說明當前列不可能存在這個數(shù);
如果小于要查找的數(shù)字, 說明當前行不可能存在這個數(shù).
#!/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 找到右上角的數(shù)字
while 0 <= x <row and 0 <= y < column:
if array[x][y] == target:
return True
elif array[x][y] > target: # 說明當前列不會有這個數(shù)了
y -= 1
elif array[x][y] < target: # 說明當前行不會有這個數(shù)了
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)