根據網絡資源學習的筆記整理如下:如有侵權,請聯繫我立即刪除!
二維數組中查找
在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
遍歷法
public class Solution {
public boolean Find(int target, int [][] array) {
boolean result = false;
for(int i = 0;i< array.length;i++){
for(int j = 0;j< array[0].length;j++){
if(array[i][j] == target){
result = true;
break;
}
}
}
return result;
}
}
邏輯思路類
以下代碼及思路來自於 IDEA_TEYU_1112的博客: 牛客網刷題java之在一個二維數組中….
public class Solution {
public boolean Find(int target, int [][] array) {
/*
思路:
根據數組的特點可以發現,如果從左下角開始查找更爲方便
左下角的數比同一列的數大,同時比同一行的數小
也就是從左下角開始比,如果target傳入的數大於它則列數加一繼續比較
如果小於它則行數減一繼續比較
*/
//定義行數
int rows=array.length;
//定義列數
int lies=array[0].length;
//定義i用來技計數
int i=0;
//while裏的條件是極限情況,不滿足條件的時候則停止
while((rows>0)&&(i<lies))
{
//目標大於左下角,讓列數自增
if(target>array[rows-1][i])
{
i++;
//目標小於左下角,讓行數自減
}else if(target<array[rows-1][i])
{
rows--;
}else
{
//除了上述兩種情況就是相等了,說明已經找到了
return true;
}
}
//遍歷完還沒有找到,說明不存在
return false;
}
}