劍指offer 3 二維陣列中的查詢

2021-09-24 05:33:09 字數 1937 閱讀 6865

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

查詢整數時,如果從左上角開始查詢,情況較為複雜,可以轉換思路,從右上角開始查詢:左邊數字比較小,右邊數字比較大,容易進行判斷。

測試用例

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 ...