劍指Offer03 二維陣列中的查詢

2022-04-11 21:04:57 字數 838 閱讀 3402

題目:

/**

* 在乙個二維陣列中,每一行都按照從左到右遞增

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

* 請完成乙個函式,輸入這樣的乙個二維陣列

* 和乙個整數,判斷陣列中是否函式該整數。

*/

解題思路:

查詢的本質就是先指定乙個初始值,把初始值與要查詢的數進行比較,如果兩個數相等,就返回true,否則初始值發生變化,繼續與要查詢的值進行比較,直到找到或找不到;

在本題中的二維陣列中,數字的排序遵循從左向右增加,從上往下增加的規律,問題的關鍵在於如何選取適當的初始值,來簡化查詢的過程;

簡化查詢的過程在於如何縮小陣列中的範圍,左上角和右下角分別對應陣列中的最小值和最大值,如果以兩者中的其中之一為初始值的話,初始值都能夠朝著兩個方向發生變化

若選取右上角和左下角的值為初始值,比如右上角的值為初始值,若要查詢的值小於初始值,則可以排除右上角所在的列,若要查詢的值大於初始值,則可以排除右上角所在的行。

以此類推,直到找到要查詢的值或找不到返回false,左下角的值同理。

**如下:

public

class

arrayserach ,,,

};system.out.println(search(arr,7));

}private

static

boolean search(int arr,int

value)

if(arr[i][j] >value)

else

}return

false

; }

}

劍指offer03 二維陣列中的查詢

二維陣列中,即陣列中前台陣列,行數i matrix.length,即一維陣列的個數 列數j matrix 0 length,即一維陣列的列數 在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣...

劍指offer 03 二維陣列中查詢數字

在乙個二維陣列中,每一行都按從左到右遞增的順序排列,每一列都按照從上到下的順序排列。實現在這個陣列中的查詢函式。思路 首先選取陣列中右上角 左下角 的數字。如果該數字等於要查詢的數字,查詢過程結束 如果該數字大於要查詢的數字,剔除這個數字所在的列 如果該數字小於要查詢的數字所在的行。public s...

劍指offer 二維陣列中查詢 03

include include 注意知識點 1.當問題比較複雜時,應該通過具體的例子找到規律 2.二維陣列中,應該通過行號和列號計算出相對於陣列首位址的偏移量 3.注意函式中的陣列引數怎麼定義,怎麼傳引數,又是怎麼取元素的 4.注意二維陣列的定義 居然都忘了 自己寫的,驗證沒問題 bool find...