704-二分查找
二分查找前提: 数组有序,数组值不重复
代码:
class Solution {
public int search(int[] nums, int target) {
int l = 0, r = nums.length-1;
while(l <= r){
int mid = (r + l) >> 1;
if(nums[mid] == target) return mid;
if(nums[mid] > target){
r = mid - 1;
}else{
l = mid + 1;
}
}
return -1;
}
}
27-移除元素
双指针法:
- 遍历数组元素, 如果当前位置与val相等,则其位置不动
- 若不相等,则需要将其移动到相应的位置,这个位置需要用指针 l 记录
注意是原地修改: 所以不能创建新数组, 必须在原数组上进行更改
代码:
class Solution {
public int removeElement(int[] nums, int val) {
// 原地修改
// 双指针: 一个指针记录存放不相等元素的位置, 一个指针遍历数组
int l = 0;
for(int i=0; i<nums.length; i++){
if(nums[i] != val){
nums[l++] = nums[i];
}
}
return l;
}
}