LeetCode数组查找问题

简单的二分查找法:(Leetcode704);

注意条件(low<=high)

public int search(int[] nums, int target) {
    	
    	int low=0;
    	int high=nums.length-1;
    	
    	while(low<=high){
    		if(nums[low]==target){
    			return low;
    		}
    		if(nums[high]==target){
    			return high;
    		}
    		int mid=(low+high)/2;
    		if(nums[mid]==target){
    			return mid;
    		}
    		else if(nums[mid]>target){
    			high=mid-1;
    			low++;
    		}
    		else{
    			low=mid+1;
    			high--;
    		}
    		
    	}
    	return -1;
    	
    }

 

LeetCode 74:

//编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
//
//每行中的整数从左到右按升序排列。
//每行的第一个整数大于前一行的最后一个整数。
//也就是数组中的所有元素全是按照升序排列

/*
* 实现方法:
* 先从右上角开始查询,满足返回
* 如果比其大就到下面列进行查询,不然就在当前行进行查询
*
* */

//		从右上角开始进行操作,先找到位置
		if(matrix.length==0){
			return false;
		}
		
		int row=0,col=matrix[0].length-1;
		
		while(row<matrix.length && col>=0){
			if(matrix[row][col]<target){
				row++;
			}
			else if(matrix[row][col]>target){
				col--;
			}
			else{
				return true;
			}
		}
		return false;

 Leetcode 240 : 搜索二维矩阵II

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。
public boolean searchMatrix(int[][] matrix, int target) {
//		同样的实现实现策略,还是先从右上角开始
		if(matrix.length==0){
			return false;
		}
		
		int row=0;
		int col=matrix[0].length-1;
		
		while(row<matrix.length && col>=0){
			if(matrix[row][col]<target){
				row++;
			}
			else if(matrix[row][col]>target){
				col--;
			}
			else{
				return true;
			}
		}
		return false;
		
		
	        
	 }

  

 

 

posted @ 2019-02-26 17:48  Qian1996  阅读(237)  评论(0编辑  收藏  举报