劍指offer 04 二維陣列的查詢

2022-09-01 01:42:10 字數 1347 閱讀 4377

在乙個 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

普通的暴力遍歷解法就不贅述了

複雜度分析:

利用每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序的規律

target與第一行的最後乙個元素end比較

如果target>end,說明target大於這一行的所有元素,continue到下一行比較最後乙個元素

如果target

如果target==endreturn true

可以證明,如果直到最後一行還不能找到target==end則說明二維陣列沒有target

public class offer04 

int r = matrix.length - 1;

int c = matrix[0].length - 1;

for (int i = 0; i <= r; i++) else if (target > end) else if (target < end) else if (matrix[i][j] < target) }}

}return false;

}public static void main(string args) ,,,

,};

system.out.println(findnumberin2darray(arr, 5)); // true

system.out.println(findnumberin2darray(arr, 20)); // false

}}

複雜度分析

劍指offer04 二維陣列查詢

在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。測試示例 矩陣 matrix 如下 begin 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 ...

劍指Offer04 二維陣列中的查詢

在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個高效的函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 10,13,1...

劍指 Offer 04 二維陣列中的查詢

在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。遍歷陣列 時間複雜度 o nm 空間複雜度o 1 從二維陣列的右上角開始查詢。如果當前元素等於目標值,則返回 true。如...