数组类

总结了一些大神的方法和解题思路,链接也是lc上的感觉好的回答,会经常更新,主要起到督促学习作用,大神轻喷。

一、双指针

应对数组类的问题,一个常见的方法就是双指针。首先要明确:一类问题,一类解,不可能每道题解题方法都一样,但是解题思路可能有类似的地方。

1.有序 数组找到不重复的数字个数:利用双指针p q
  • 如果p q 相等,q后移
  • 不相等,将q位置的数字复制到p+1,同时p后移,并且q后移
  • 直到q等于数组长度
  • 最后返回p+1;
    链接S:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/solution/shuang-zhi-zhen-shan-chu-zhong-fu-xiang-dai-you-hu/
2.无序 数组 给定一个值 数组中元素不等于这个值的个数
  • 如果q位置的数字等于这个数,q递增以跳过这个数
  • 如果q不等于这个数,将q的数字复制到p,p q递增
  • q到达数组末尾,数组长度为p
    链接S:https://leetcode-cn.com/problems/remove-element/solution/yi-chu-yuan-su-by-leetcode/

二、二分法

大部分二分问题思路:
  • 用while(left < right)来缩小范围
  • 根据中位数和目标数值的关系,来取范围
  • 区间剩下一个元素时(退出循环的时候有 left == right 成立),该元素很可能为目标值
    链接S:https://leetcode-cn.com/problems/search-insert-position/solution/te-bie-hao-yong-de-er-fen-cha-fa-fa-mo-ban-python-/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值