在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
查詢整數時,如果從左上角開始查詢,情況較為複雜,可以轉換思路,從右上角開始查詢:左邊數字比較小,右邊數字比較大,容易進行判斷。
測試用例
1.要查詢的數字在陣列中
2.要查詢的數字不在陣列中
3.陣列為空
4.陣列不滿足大小規則
5.陣列每行長度不一致.
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)
}
test1:數字7在二維陣列中的下標為:2,1
test2:陣列中不含數字:5
test3:陣列無效!
test4:陣列中數字大小不符合要求!
test5:陣列列數不一致!
劍指offer 3 二維陣列中的查詢
題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。解題思路 從二維陣列的右上角的元素開始判斷,因為此元素是它所在行的最大數,是它所在的列的最小數。如果它等於要查詢的數字,則查詢過...
劍指Offer 3 二維陣列中的查詢
題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。include using namespace std bool search int matrix,int rows,int ...
劍指offer3 二維陣列中的查詢
題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。package com.cxy.test public class tset03 int rows matrix.length ...