劍指offer 4 二維陣列中的查詢

2021-09-16 22:06:02 字數 1103 閱讀 9218

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

首先選取陣列中右上角的數字。

如果該數字等於要查詢的數字,則查詢結束;

如果該數字大於要查詢的數字,則剔除該數字所在的列。

如果該數字小於要查詢的數字,則剔除這個數字所在的行。

即如果要查詢的數字不在陣列的右上角,則每次都在陣列的查詢範圍中剔除一行或者一列,這樣每步都可以縮小查詢的範圍,直到找到要查詢的數字,或者查詢範圍為空。

同理,也可以選取左下角的數字。

如果該數字等於要查詢的數字,則查詢結束;

如果該數字大於要查詢的數字,則增加該數字所在的列。

如果該數字小於要查詢的數字,則增加這個數字所在的行。

即如果要查詢的數字不在陣列的左下角,則每次都在陣列的查詢範圍中增加一行或者一列,這樣每步都可以縮小查詢的範圍,直到找到要查詢的數字,或者查詢範圍為空。

package swordoffer;

/* * 在乙個二維陣列中(每個一維陣列的長度相同),

* 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。

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

* */

public class findindyadicarray else if(target > array[i][j]) else

// }

//

// return false;

// }

public static boolean find(int target, int array) else if(target > array[i][j]) else

} return false; }

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

system.out.println(find(7, array));

system.out.println(find(5, array));

}}

劍指offer4 二維陣列中查詢

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列也都是按照從上到下遞增的順序排序。完成乙個函式,輸入乙個二維陣列和乙個整數,判斷該陣列中是否含有該整數。最開始的想法肯定就是暴力搜尋了,雙重for迴圈,但是這樣就和題目中給定的遞增的條件沒什麼關係了,顯然不是題目的本意。於是,採取另一種辦法...

劍指offer 4 二維陣列中查詢

乙個n m的二維陣列中,每一行都按照從左往右遞增的順序排序 每一列都按照從上到下遞增的順序排序。實現乙個函式 輸入乙個這樣的陣列和乙個整數,判斷這個陣列中有沒有這個整數 思路 方法一 暴力遍歷矩陣 matrix o n m 方法二 矩陣逆時針旋轉40 矩陣,得到二叉搜尋樹 根節點對應的是 7 3 這...

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

題目 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。把二維陣列看作乙個矩陣,選擇矩陣右上角或者左下角的元素開始比較。逐步縮小比較範圍。public clas...