【算法】双指针

待我称王封你为后i 2024-03-27 13:02 170阅读 0赞

双指针

双指针算法,通过设置两个变量

  • 不同方向
  • 同一方向,不同速度

例如:
27. 移除元素 - 力扣(LeetCode)

  1. public int removeElement(int[] nums, int val) {
  2. int left=0;//慢指针
  3. int right=0;//快指针
  4. //快指针以正常速度前进
  5. for(;right<nums.length;right++){
  6. if(nums[right]!=val){
  7. //慢指针在满足条件的情况下,才前进
  8. nums[left]=nums[right];
  9. left++;
  10. }
  11. }
  12. return left;
  13. }

相关题目

  • 26. 删除有序数组中的重复项 - 力扣(LeetCode)
  • 27. 移除元素 - 力扣(LeetCode)
  • 283. 移动零 - 力扣(LeetCode)
  • 844. 比较含退格的字符串 - 力扣(LeetCode)
  • 977. 有序数组的平方 - 力扣(LeetCode)
  • 19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)

发表评论

表情:
评论列表 (有 0 条评论,170人围观)

还没有评论,来说两句吧...

相关阅读

    相关 算法——指针

    一、背景知识 > 双指针(Two Pointers):指的是在遍历元素的过程中,不是使用单个指针进行访问,而是使用两个指针进行访问,从而达到相应的目的。 >

    相关 算法指针题解

    双指针 算法解释:(直接照搬齐姐的了) 双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多 个数组的多个指针。 若两个指针指向同一数组

    相关 算法模板-指针

    简介 在很多数组问题中,双指针是一个反复被提及的解法。所谓双指针,指的是在对象遍历的过程中,并非单个指针进行访问,而是使用两个同向(快慢指针)或者反向(对撞指针)来进行扫