704. 二分查找
链接
这道题之前做过,再次做的时候还是犯了不少错误
- 二分查找算法的时间复杂度可以用 O(log2n) 表示,要求数组为有序
借助 ⌊(low+high)/2⌋ 公式,找到搜索区域内的中间元素
更新搜索区域
需要注意很多细节,如区间开闭,是否加减1,小于还是小于等于?
class Solution {
public int search(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while(left<=right){
int middle = left +(right-left)/2 ;
if(nums[middle]<target){
left = middle + 1;
}else if(nums[middle]>target){
right = middle - 1;
}else{
return middle;
}
}
return -1;
}
}
27. 移除元素
class Solution {
public int removeElement(int[] nums, int val) {
int right = nums.length - 1;
for (int i=nums.length-1;i>=0;i=i-1){
if(nums[i]==val){
nums[i] = nums[right];
right = right-1;
}
}
return right+1;
}
}