27 移除元素
public int removeElement(int[] nums, int val) {
int now=0;
int n=nums.length;
for(int i=0;i<n;i++){
if(nums[i]!=val){//如果有不同的元素要保存,用双指针来控制,慢指针控制现在的数据,快指针控制遍历进度
nums[now++]=nums[i];
}
}
return now;
}
704 二分查找
public int search(int[] nums, int target) {
int left=0;//左边界
int right=nums.length-1;//右边界
while(left<=right){
int mid=left+(right-left)/2;//每次取中间值去跟tar比较可直接忽略一半的查找,但注意整形可能会溢出,所以在求中间值时让right-left这样left只加差值一半就好了
if(nums[mid]>target)//判断与tar的关系
right=mid-1;
else if(nums[mid]==target)
return mid;
else
left=mid+1;
}
return -1;//若最后没找到返回-1;
}