純暴力有點太唐了,不過竟然能過;還有行和列的表示我一直搞反了。。。
class Solution {public boolean searchMatrix(int[][] matrix, int target) {for(int i = 0 ;i<matrix.length;i++){for(int j = 0 ;j<matrix[0].length;j++){if(matrix[i][j]==target) return true;}}return false;}
}
?我第一時間想到了二分,但對行和列同時二分不會寫,光對行的話nlogm的復雜度也不是很優化
然后看題解看到一種天才的想法,和二分一樣都是利用遞增的性質,不過二維遞增可以用更好用的性質,這里背板子就行了(這是不是對行和列同時二分的特殊形式呢
?
class Solution {public boolean searchMatrix(int[][] matrix, int target) {int x = 0;int y = matrix[0].length-1;while(x<matrix.length&&y>=0){if(matrix[x][y]==target) return true;else if(matrix[x][y]>target) y--;else x++;}return false;}
}