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