代码随想录第一天|704. 二分查找 27.移除元素

文档讲解:代码随想录

704 二分查找

经典题型
记忆点:

  1. 写成 mid = l + (r - l) / 2或者 mid = l + ((r - l) >> 1) 可以避免溢出问题(两个int直接相加可能会越界)
  2. 记模板:l <= r; l = mid + 1; r = mid - 1 (左闭右闭)

写while中判定以及重新定义mid时,确立合法区间
左闭右闭 r = nums.size() - 1; l <= r; l = mid + 1; r = mid - 1
左闭右开 r = nums.size(); l < r; l = mid + 1; r = mid;

27 移除元素

双指针法
一开始写冗杂了,采用头和尾两个指针的方式

评论区的题解采用了快满指针的方式

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
       int l = 0;
       for (int n : nums) {
           if (n == val) {
               continue;
           }
           nums[l++] = n;
       }
       return l;
    }
};

977 有序数组的平方

在这里插入图片描述
双指针法 可以得到由大到小排列的数组
想得到由小到大的数组,因此更新新的数组时,下标应由大到小更新(数组长度已经确定)
初始化数组:
vector ans(nums.size());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值