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;
        }
    }
    

      

  • 相关阅读:
    Spring配置数据源和注解开发
    spring 的配置介绍
    spring
    maven
    mybatis初始
    idea中配置xml不自动提示解决方案(eclipse配置XmlCatalog)
    JSON、AJAX
    ThreadLocal的使用
    Filter过滤器
    谷歌 kaptcha 图片验证码的使用
  • 原文地址:https://www.cnblogs.com/lautsie/p/3239123.html
Copyright © 2011-2022 走看看