在乙個 n * m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個高效的函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
現有矩陣 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
。
0 <= n <= 1000
0 <= m <= 1000
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
20比15大
2 5 8 12[19]
3 6 9 16 22
10 13 14 17 24
18 21 23 26 30
20比19大
3 6 9 16[22]
10 13 14 17 24
18 21 23 26 30
20比22小
3 6 9 [16]
10 13 14 17
18 21 23 26
20比16大
10 13 14[17]
18 21 23 26
20比17大
18 21 23 [26]
20比26小
18 21 [23]
20比23小
18 [21]
20比21小
[18]
20不等於18,故陣列中不含有20,返回false。
package main
import
"fmt"
func
main()
,,,,
,}fmt.
println
(findnumberin2darray
(matrix,5)
) fmt.
println
(findnumberin2darray
(matrix,20)
)}func
findnumberin2darray
(matrix [
]int
, target int
)bool
n, m :=
len(matrix)
,len
(matrix[0]
)for i, j :=
0, m-
1; i < n && j >=0;
else
if matrix[i]
[j]< target
else
}return
false
}
#include #include using namespace std;
bool find(int target, vector> array)
return false;
}int main()
array.push_back(v);
v.clear();
} cout << find(target, array) << endl;
return 0;
}
劍指offer04 二維陣列查詢
在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。測試示例 矩陣 matrix 如下 begin 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 ...
劍指 Offer 04 二維陣列中的查詢
在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。遍歷陣列 時間複雜度 o nm 空間複雜度o 1 從二維陣列的右上角開始查詢。如果當前元素等於目標值,則返回 true。如...
劍指 Offer 04 二維陣列中的查詢
題目描述 在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。解題思路 這道題可以有兩種解法 1 暴力法,直接進行兩次遍歷。2 根據這個二維陣列的特點,從二維陣列的右上角開始...