劍指Offer04 二維陣列中的查詢

2021-09-19 10:04:37 字數 1924 閱讀 8404

在乙個 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 根據這個二維陣列的特點,從二維陣列的右上角開始...