題目:
/*** 在乙個二維陣列中,每一行都按照從左到右遞增
* 的順序排序,每一列都按照從上到下遞增的順序排序。
* 請完成乙個函式,輸入這樣的乙個二維陣列
* 和乙個整數,判斷陣列中是否函式該整數。
*/
解題思路:
查詢的本質就是先指定乙個初始值,把初始值與要查詢的數進行比較,如果兩個數相等,就返回true,否則初始值發生變化,繼續與要查詢的值進行比較,直到找到或找不到;
在本題中的二維陣列中,數字的排序遵循從左向右增加,從上往下增加的規律,問題的關鍵在於如何選取適當的初始值,來簡化查詢的過程;
簡化查詢的過程在於如何縮小陣列中的範圍,左上角和右下角分別對應陣列中的最小值和最大值,如果以兩者中的其中之一為初始值的話,初始值都能夠朝著兩個方向發生變化
若選取右上角和左下角的值為初始值,比如右上角的值為初始值,若要查詢的值小於初始值,則可以排除右上角所在的列,若要查詢的值大於初始值,則可以排除右上角所在的行。
以此類推,直到找到要查詢的值或找不到返回false,左下角的值同理。
**如下:
publicclass
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...