java 240.搜索2D Matrix II(#)。java

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 240.搜索2D Matrix II(#)。java相关的知识,希望对你有一定的参考价值。

public boolean searchMatrix(int[][] matrix, int target) {
    int m = matrix.length;
    if(m<1) return false;
    int n = matrix[0].length;
    
    return searchMatrix(matrix, new int[]{0,0}, new int[]{m-1, n-1}, target);
}

private boolean searchMatrix(int[][] matrix, int[] upperLeft, int[] lowerRight, int target) {
	if(upperLeft[0]>lowerRight[0] || upperLeft[1]>lowerRight[1]
			|| lowerRight[0]>=matrix.length || lowerRight[1]>=matrix[0].length) 
		return false;
	if(lowerRight[0]-upperLeft[0]==0 && lowerRight[1]-upperLeft[1]==0)
		return matrix[upperLeft[0]][upperLeft[1]] == target;
	int rowMid = (upperLeft[0] + lowerRight[0]) >> 1;
	int colMid = (upperLeft[1] + lowerRight[1]) >> 1;
	int diff = matrix[rowMid][colMid] - target;
	if(diff > 0) {
		return searchMatrix(matrix, upperLeft, new int[]{rowMid, colMid}, target)
				|| searchMatrix(matrix, new int[]{upperLeft[0],colMid+1}, new int[]{rowMid, lowerRight[1]}, target)
				|| searchMatrix(matrix, new int[]{rowMid+1,upperLeft[1]}, new int[]{lowerRight[0], colMid}, target);
	}
	else if(diff < 0) {
 		return searchMatrix(matrix, new int[]{upperLeft[0], colMid+1}, new int[]{rowMid, lowerRight[1]}, target)
				|| searchMatrix(matrix, new int[]{rowMid+1, upperLeft[1]}, new int[]{lowerRight[0], colMid}, target)
				|| searchMatrix(matrix, new int[]{rowMid+1, colMid+1}, lowerRight, target);
	}
	else return true;
}
public class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        if (matrix == null || matrix.length < 1 || matrix[0].length < 1) return false;
        int m = matrix.length;
        int n = matrix[0].length;
        
        int row = 0;
        int col = n - 1;
        while (col >= 0 && row < m) {
            int cur = matrix[row][col];
            if (cur == target) {
                return true;
            } else if (cur > target) {
                col--;
            } else {
                row++;
            }            
        }
        return false;

    }
}

以上是关于java 240.搜索2D Matrix II(#)。java的主要内容,如果未能解决你的问题,请参考以下文章

java 240.搜索2D Matrix II(#)。java

java 240.搜索2D Matrix II(#)。java

java 240.搜索2D Matrix II(#)。java

java 240.搜索2D Matrix II(#)。java

题目地址(2d-matrix-ii/“>240. 搜索二维矩阵 II)

c_cpp 240.搜索2D Matrix II