
二維數組中的查找
1. 題目描述
在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
2. 示例
現有矩陣 matrix 如下:
[ [1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30] ]
給定 target = 5,返回 true。
給定 target = 20,返回 false。
3. 解題思路
使用以下方法的前提是:該矩陣是有序的。
從矩陣的左下角開始搜索,即從18 開始查找,如果該數大于目標數,則 行數 減去 1,向上搜索小的數值;
如果小于目標數,則 列數 + 1 ,向右邊搜索,搜索更大的數值
4. Java實現
//?Java語言實現
public?class?Solution?{
????public?boolean?Find(int?target,?int?[][]?array)?{
????????int?row?=?array.length-1;
????????int?col?=?0;??
????????//?從左下角開始搜索,array.length?表示行的大小,array[0].length表示列的大小
????????
????????while?(row?>=?0?&&?col?<=?array[0].length-1){
????????????if?(array[row][col]?==?target){
????????????????return?true;
????????????}else?if(array[row][col]?>?target){
????????????????row--;
????????????}else{
????????????????col++;
????????????}
????????????
????????}
????????return?false;
?
????}
}
5. Python實現
class?Solution(object):
????def?searchMatrix(self,?matrix,?target):
????????"""
????????:type?matrix:?List[List[int]]
????????:type?target:?int
????????:rtype:?bool
????????"""
????????
????????if?not?matrix:
????????????return?False
????????
????????rows,?cols?=?len(matrix),?len(matrix[0])
????????#從左下角開始搜索
????????row,?col?=?rows?-?1,?0
????????while?row?>=?0?and?col?<=?cols-1:
????????????if?matrix[row][col]?==?target:
????????????????return?True?
????????????elif?matrix[row][col]?????????????????col?+=?1
????????????else:
????????????????row?-=?1?#?row一直減少
????????return?False
如果您覺得本文有用,請點個“在看”

Java開發微服務暢購商城實戰-全357集【附代碼課件】
Java微服務實戰谷粒商城-296集【附代碼課件】
Spring Boot開發小而美的個人博客【附課件和源碼】
基于Python flask框架的租房項目實戰【附資料和源碼】
PyQt5開發與實戰視頻【附課件和源碼】
最全最詳細數據結構與算法視頻-【附課件和源碼】
2020年微信小程序全棧項目之喵喵交友【附課件和源碼】
? ? ? ? ? ? ? ? ? ? ??
你點的每一個在看,我都認真當成了喜歡