704. 二分查找
class Solution {
public int binarySearch(int[] nums, int target) {
//题意:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,
//写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
int low=0,high=nums.length-1;
while(low<=high){
int middle = (low+high)/2;
if(nums[middle]==target){
return middle;
}else if(nums[middle] > target){
//这里说明target在左半区
high = middle-1;
}else{
//这里说明target在右边半区
low = middle +1;
}
}
return -1;
}
}
27. 移除元素
class Solution {
public int removeElement(int[] nums, int val) {
//题意给你一个数组 nums 和一个值 val,你需要 原地
//移除所有数值等于 val 的元素,并返回移除后数组的新长度。
//不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
//元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
int slow = 0;;
for(int fast = 0;fast < nums.length; fast++){
//遇到等于val元素,fast指针继续向前,low指针不动
if(nums[fast] != val){
//否则覆盖掉val所在位置
nums[slow] = nums[fast];
//slow指针继续向后
slow ++;
}
}
return slow;
}
}
//双层for解决
public int removeElement(int[] nums , int val) {
int size = nums.length;
for(int i = 0;i<size;i++){
if(nums[i] == val) {
for(int j = i+1;j<size;j++){
nums[j] = nums[j+1];
}
size--;
i--;
}
}
return size;
}