題目:
在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
思路:
這個題目相對前面三題比較簡單,假設該二維陣列為下圖(a),主要是思路上面過去,實現起來挺簡單的,下面我介紹一下實現思路,有種思路是分成幾部分去查詢,但是會出現重疊的部分,因此可以考慮從右上角或者左上角進行比對,因為無論從左到右還是從上到下都是有序的,所以每一行的右邊總比左邊大,每一列的下面總比上邊大,因此,找乙個數的時候,假設是7,
從右上角開始比較,a[0][4] = 9 所以a[0] [4] 這一列所有的數都大於等於9,因此該列可以刪除,同理,可以刪除[3]列,得到(b)
依照同樣的方法,從右上角開始刪除行,可以刪除和行。只剩下兩行兩列,比較右上角的數字,相等則返回
(a) 12
8924
91247
101368
1115
(b) 12
2447
68**實現
/**
* @description 二維陣列中的查詢
* * @author hsk
*/ // 題目:在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按
// 照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個
// 整數,判斷陣列中是否含有該整數。
public class findinpartiallysortedmatrix 代表不存在
*/public int find(int matrix, int a) ;
// 判斷陣列是否正確
if (matrix == null || matrix.length <= 0)
// 判斷陣列數字的大小是否符合大小規則
int columns = matrix[0].length;
for (int i = 0; i < matrix.length; i++)
for (int j = 0; j < matrix[i].length; j++)
} else if (j == 0)
} else if (matrix[i][j] < matrix[i - 1][j] || matrix[i][j] < matrix[i][j - 1]) }}
// 正式查詢
int row = 0; // 行數
int column = matrix[0].length - 1; // 列數
while (row <= matrix.length - 1 && column >= 0) else if (a < matrix[row][column]) else
}system.out.println("陣列中不含數字:" + a);
return index;
}// ******************************====測試********************************====
// 1 2 8 9
// 2 4 9 12
// 4 7 10 13
// 6 8 11 15
// 要查詢的數在陣列中
public void test1() , , , };
int index = find(matrix, 7);
}// 1 2 8 9
// 2 4 9 12
// 4 7 10 13
// 6 8 11 15
// 要查詢的數不在陣列中
public void test2() , , , };
int index = find(matrix, 5);
}// 陣列為空
public void test3()
// 1 2 8 9
// 4 3 9 12
// 4 7 10 13
// 6 8 11 15
// 陣列不滿足大小規則
public void test4() , , , };
int index = find(matrix, 7);
}// 陣列每行長度不一致
public void test5() , , , };
int index = find(matrix, 7);
}public static void main(string args)
}
3 二維陣列中的查詢
參考 二分查詢方法 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。方法一 劍指offer中提供的方法 如果我們從左上角開始查詢,那麼當查詢元素比左上元素大時,無法判斷是應該向下 向...
3 二維陣列中的查詢
題目描述 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。解析 取二維陣列的右上方的頂點與要找的數字比較,如果要找的數字比頂點的數字小,那麼捨棄該列 colu...
3 二維陣列中的查詢
編寫乙個高效的演算法來搜尋 m x n 矩陣 matrix 中的乙個目標值 target。該矩陣具有以下特性 每行的元素從左到右公升序排列。每列的元素從上到下公升序排列。示例 現有矩陣 matrix 如下 給定 target 5,返回 true。給定 target 20,返回 false。因為二維陣...