代码随想录-2023/06/28

389 阅读1分钟

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-移除元素

双指针法:

  1. 遍历数组元素, 如果当前位置与val相等,则其位置不动
  2. 若不相等,则需要将其移动到相应的位置,这个位置需要用指针 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;
    }
}