劍指Offer 二維陣列中的查詢

2021-10-09 20:23:05 字數 1362 閱讀 7973

/**

* 在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。

* 請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

*/public class jz001binaryarraysearch

int rows = array.length;

int cols = array[0].length;

if (target < array[0][0] || target > array[rows - 1][cols - 1])

int row = 0;

int col = cols - 1;

boolean flag = false;

while (row < rows && col >= 0) else if (target < array[row][col]) else

}return flag;

}/**

* 從這個二維陣列的最左下角的元素查詢

* 1、當目標值 等於 當前元素 直接返回 true

* 2、當目標值 小於 當前元素 那 行的值減1,繼續查詢

* 3、當目標值 大於 當前元素 那 列的值加1,繼續查詢

* @param target

* @param array

* @return

*/public static boolean find2(int target, int array)

int rows = array.length;

int cols = array[0].length;

if (target < array[0][0] || target > array[rows - 1][cols - 1])

int row = rows - 1;

int col = 0;

while (row >= 0 && col < cols) else if (target < array[row][col]) else

}return false;

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

};system.out.println(find2(9, array));}/*

二維陣列中查詢

總結:1、有序,首先我們需要想到二分法

2、本題有意思的地方是需要我們知道怎麼遍歷行,什麼時候遍歷列

3、複雜度:

3.1、時間復制度 o(m+n),m為行數,n為列數,最壞的情況下,需要遍歷m+n次

3.2、空間復制度 o(1),沒有借用其他任何空間

*/}

劍指offer 二維陣列中查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和一 個整數,判斷陣列中是否含有該整數。public class solution 因為陣列每一行都按照從左到右遞增的順序排序,每一列都按照從上到下...

劍指offer 二維陣列中查詢

從今天開始每天一題,除了節假日。在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。class solution return false class solut...

劍指offer 二維陣列中查詢

要求如下 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數 示例如下 7,1,2,8,9 2,4,9,12 4,7,10,13 6,8,11,15 思路有三種,...