数组双指针

数组双指针分为两类:

  • 左右双指针:左指针在最左侧,右指针在最右侧,它们相向而行
  • 快慢双指针:在单链表中经常使用fast、slow指针去判断链表中是否成环、单链表的终点、单链表倒数第k个结点等;同向而行;快指针在前面跑,慢指针在后面追;
  • 特例:背向而行–回文串

1、快慢指针技巧,原地修改数组
分析:

也可直接使用数组删除–代价是复杂度高
高效率----双指针

概述:
fast起到一个探路的作用:fast每找到一个不同的元素,然后就将元素赋值给slow,让slow往前走一步,维护了这个数组中的元素没有重复的;
遍历完整个数组之后,0-slow就是需要的结果,将整个长度返回即可。

框架:

1、定义快慢指针—名为指针(实际是int类型代表数组的下标)

2、fast提前进行向前面走去、slow在后面将fast寻找的不重复的数进行存储

题目

int removeDuplicates(int* nums, int numsSize){int fast=0,slow=0;while(fast < numsSize){while(nums[fast] != nums[slow]){slow++;nums[slow] = nums[fast];}fast++;}return slow+1;
}

void moveZeroes(int* nums, int numsSize){int p = Delete(nums,0,numsSize);for (int i=p;i<numsSize;i++){nums[i] = 0;}return nums;
}int Delete(int *nums,int val,int numsSize)
{int fast = 0,slow = 0;while(fast < numsSize){if (nums[fast] != val){nums[slow] = nums[fast];slow++;}fast++;}return slow;}

数组双指针之快慢指针相关推荐

  1. 力扣刷题笔记 数组篇02——双指针(快慢指针)法

    总结先放在前面: 双指针法在数组中是通过使用两个或者多个以上的下标,通过一个快指针和慢指针在一个for循环下完成两个for循环的工作,这样做大幅降低了时间复杂度 题目的类型也比较灵活,一般多用于有序数 ...

  2. C++ 双指针汇总(快慢指针, 滑动窗口, 前后指针,左右指针)

    一. 归并有序序列 LeetCode 88题 input: nums1 = {2,2,3,0,0,0}; m=3; nums2 = {1,5,6}; n=3 output: nums1 = {1,2, ...

  3. leetcode算法算题记录-数组--快慢指针

    package array;import java.util.Arrays;/*** @program: project* @description: 快慢指针* @author: 小北丶* @cre ...

  4. 双指针--快慢指针和对撞指针

    1.基础概念 两个指针有 n*n种组合,因此时间复杂度是 O(n^2) .而双指针算法就是运用单调性使得指针只能单向移动,因此总的时间复杂度只有 O(2n),也就是O(n).双指针可以分为两种类型,一 ...

  5. LeetCode 例题精讲 | 05 双指针×链表问题:快慢指针

    点击关注上方"五分钟学算法", 设为"置顶或星标",第一时间送达干货. 转自面向大象编程 本期例题: LeetCode 876 - Middle of the ...

  6. 双指针算法之快慢指针(一):力扣【判断链表是否有环】leetcode-141、142

    一.简介:什么是快慢指针? 快慢指针,顾名思义,无非就是设置一个快指针,一个慢指针,初始化的时候,快指针和慢指针都指向链表的头结点,前进的时候一个在前一个在后,结合起来可以十分巧妙的解决链表中的一些问 ...

  7. 双指针算法之快慢指针(二):力扣【寻找链表的第N个点】leetcode-876、19

    双指针算法之快慢指针(二):力扣[寻找链表的第N个点]leetcode-876.19 看完本文,可以去解决力扣的 867 题和 19 题 以往参考:双指针算法之快慢指针(一):力扣[判断链表是否有环] ...

  8. [剑指offer][JAVA]面试题第[22]题[j剑指offer][双指针][快慢指针]

    [问题描述][中等] 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2. ...

  9. LeetCode 2130. 链表最大孪生和(链表快慢指针+反转链表+双指针)

    文章目录 1. 题目 2. 解题 1. 题目 在一个大小为 n 且 n 为 偶数 的链表中,对于 0 <= i <= (n / 2) - 1 的 i ,第 i 个节点(下标从 0 开始)的 ...

最新文章

  1. CSS元素的基本应用(附加京东面试题)
  2. linux 系统运行状况 shell命令 watch 监控进程是否存在
  3. 不用现有方法,把string转换成int型[C#]
  4. Redis 过期键删除策略、内存淘汰机制
  5. ubuntu18.10运行95版仙剑
  6. Mask R-CNN论文理解
  7. 【转】ASP.NET Web API 使用Swagger生成在线帮助测试文档,支持多个GET
  8. timer purge_Java Timer purge()方法与示例
  9. 云原生2.0时代,华为云DevOps立体运维实践
  10. 2015-2020年各类国际会议与期刊基于图像的三维对象重建论文综述(2)——Encoder stage
  11. ★☆★书已到手《Java程序员,上班那点事儿》正式上架★☆★
  12. 婚姻是一堂需要认真学习的课程
  13. python游戏项目练习——逃出生天(2)
  14. 用 Python 分析某医院药品销售案例
  15. 学习笔记 css border-radius
  16. Burpsuite1.7.03网站渗透神器最新破解版
  17. 2023年国家留学基金委(CSC)有关国别申请、派出注意事项
  18. 美国印钱 为什么不会通货膨胀
  19. 微软teams软件_如何在Microsoft Teams中创建和管理团队
  20. 你也可以看懂,量子力学的困惑,测不准原理 薛定谔的猫 !

热门文章

  1. C# winform与Javascript的相互调用
  2. pdf预览 pdf.js+pdfObject
  3. 从数据库中查找数据并按首字母排序
  4. 微信小程序调出多窗口
  5. Excel的数组:概念、基本使用(数组计算、理解数组、产生数组、综合运用)
  6. 好友联盟GHOST XP SP2装机版
  7. 深度学习基础--分类网络
  8. 欧姆龙CJ2M 与海利普变频器通讯 协议宏方式 欧姆龙通讯模块协议宏 功能:通过触摸屏进行启停和点动,频率设定,加减速时间,点动频率设定
  9. 一文实现Mac 上简单定时提醒小脚本
  10. BLDC/PMSM 电机的堵转保护