zoukankan      html  css  js  c++  java
  • [leetcode]Search a 2D Matrix

    简单题。二分查找的应用。犯得错误是检查了数组下界0却忘了检查上界length。

    public class Solution {
        public boolean searchMatrix(int[][] matrix, int target) {
            // Start typing your Java solution below
            // DO NOT write main() function
            
            int m = matrix.length;
            if (m == 0) return false;
        	int n = matrix[0].length;
        	if (n == 0) return false;
    
        	if (target < matrix[0][0]) return false;
        	if (target > matrix[m-1][n-1]) return false;
        	
        	int left = 0; 
        	int right = m - 1;
        	while (left <= right) {
        		int mid = (left + right) / 2;
        		if (matrix[mid][0] == target) return true;
        		
        		if (matrix[mid][0] > target) {
        			right = mid - 1;
        		} else {
        			left = mid + 1;
        		}
        	}
        	
        	// at this time right < left
        	if (left < m && target > matrix[left][0]) {
        		return searchLine(matrix[left], target);
        	}
        	else if (right >= 0 && target > matrix[right][0]) {
        		return searchLine(matrix[right], target);
        	}
        	
        	return false;
        }  
        
        public boolean searchLine(int a[], int target)
        {
        	int left = 0; 
        	int right = a.length - 1;
        	while (left <= right) {
        		int mid = (left + right) / 2;
        		if (a[mid] == target) return true;
        		
        		if (a[mid] > target) {
        			right = mid - 1;
        		} else {
        			left = mid + 1;
        		}
        	}
        	return false;
        }
    }
    

      

  • 相关阅读:
    模版继承
    用一个指向int的指针来存储一个对象的地址。
    mysql 增 删 改 查
    虚函数背后的秘密2
    二叉树的应用—最优二叉树(哈夫曼树)
    虚函数
    经典贪心,哈夫曼编码。
    以下代码有什么问题?
    前缀运算和后缀运算
    虚函数背后的秘密
  • 原文地址:https://www.cnblogs.com/lautsie/p/3239123.html
Copyright © 2011-2022 走看看