劍指 Offer 04 二維陣列中的查詢

2022-06-15 15:42:13 字數 1633 閱讀 7398

/**

* @class findnumberin2darray

* @description 劍指 offer 04. 二維陣列中的查詢

* 在乙個 n * m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。

* 請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

* * 示例:

* 現有矩陣 matrix 如下:

* [* [1, 4, 7, 11, 15],

* [2, 5, 8, 12, 19],

* [3, 6, 9, 16, 22],

* [10, 13, 14, 17, 24],

* [18, 21, 23, 26, 30]

* ]* 給定 target = 5,返回 true。

* 給定 target = 20,返回 false。

* * 限制:

* 0 <= n <= 1000

* 0 <= m <= 1000

* @author

* @date 2020/6/28

**/public class findnumberin2darray

/**

* 解法1:最簡單的方式是,逐個查詢

*/public static boolean findnumberin2darray(int matrix, int target)

} return false;

}

/**

* 方式2: 利用每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。

* 先對同一列從上到下找到 第乙個等於或者大於target的元素matrix[x][0],這樣的話x行之後的元素都肯定比target大

* 然後同樣的方式遍歷下一列,逐步縮小查詢範圍,直到查詢結束

*/public static boolean findnumberin2darray(int matrix, int target)

return false;

}

/**

* 方式3:和2類似,但是從後向前,從上到下遍歷,保證遍歷過程的時間複雜度是線性的

*/public static boolean findnumberin2darray(int matrix, int target)

return false;

}

// 測試用例

public static void main(string args) ,,,

,};

int target = 5;

boolean ans = findnumberin2darray(matrix, target);

system.out.println("demo01 result:" + ans);

target = 20;

ans = findnumberin2darray(matrix, target);

system.out.println("demo02 result:" + ans);

}

劍指offer04 二維陣列查詢

在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。測試示例 矩陣 matrix 如下 begin 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 ...

劍指Offer04 二維陣列中的查詢

在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個高效的函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 10,13,1...

劍指 Offer 04 二維陣列中的查詢

在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。遍歷陣列 時間複雜度 o nm 空間複雜度o 1 從二維陣列的右上角開始查詢。如果當前元素等於目標值,則返回 true。如...