【剑指offer】面试题04:二维数组中的查找(java)
在一個 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
思路:
從右上角開始,可以看作是一棵二叉搜索樹,比target大列減小,比target小行增大
代碼:
class?Solution?{
????public?boolean?findNumberIn2DArray(int[][]?matrix,?int?target)?{
??????if(matrix?==?null?||?matrix.length?==?0||matrix[0].length<1)?{
????????????????return?false;
????????????}
???????????int?j?=?matrix[0].length-1;
???????????int?i=0;
???????????while(i<matrix.length&&j>=0)
???????????{
???????????????if(matrix[i][j]==target)
???????????????{
???????????????????return?true;
???????????????}
???????????????else?if(matrix[i][j]>target)
???????????????{
???????????????????j--;
???????????????}
???????????????else
???????????????{
???????????????????i++;
???????????????}
???????????}
???????????return?false;
????}
}
總結
以上是生活随笔為你收集整理的【剑指offer】面试题04:二维数组中的查找(java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode--260. 只出现一次
- 下一篇: java 开发环境的搭建