二分查找
本题使用的二分查找的方法,将序列对半分,如果nums[mid]大于target值,就找上半段,否则下半段。
class Solution {
public int search(int[] nums, int target) {
int left = 0;
int right = nums.length -1;
while(left <= right){
int mid = (left+right)/2;
if(nums[mid] > target){
right = mid-1;
}else if(nums[mid] < target){
left = mid+1;
}else{
return mid;
}
}
return -1;
}
}
移除元素
本题使用的是快慢指针的方式,如果nums[i]的值不等于val值,慢指针才会移动,使用快指针遍历全部元素
class Solution {
public int removeElement(int[] nums, int val) {
int i = 0;
for(int j = 0 ; j < nums.length ; j ++){
if(nums[j] != val){
nums[i++] = nums[j];
}
}
return i;
}
}