zoukankan      html  css  js  c++  java
  • FasterSlower 快慢指针的应用

    leetcode很多题目都是利用快慢指针来解决题目,下面具体讲解下快慢指针。

    概念

    快指针在每一步走的步长要比慢指针一步走的步长要多。快指针通常的步速是慢指针的2倍。在循环中的指针移动通常为:faster = faster.next.next, slower = slower.next.

    应用

    1. 用来找中点或中位数

    2. 用来判断链表是否有环以及寻找环入口

    3. 题目中含有:倒数第n个,那么设置快指针步长为n,然后快慢指针同时以同一速度走,用慢指针寻找倒数第n个

    注意

    1. 通常需要特别留意链表长度的奇偶性

    2. 如果快指针步速为慢指针步速2倍,循环条件为:faster.next!=null&&faster.next.next!=null

    3. 当自行设置快指针步长时, 要考虑步长值等于链表长度的特殊情况

    4. 查找倒数第n个时,如果要求删除链表元素时,不要忘记记录应被删除元素的前一个元素

  • 相关阅读:
    学生信息表
    水仙花数
    DirectAccess完整配置
    这些惹人嫌系统安装方法
    求解方程式
    AD DS的维护之备份还原
    简单的switch语句
    linux_常用命令
    小小问题
    frameset和frame
  • 原文地址:https://www.cnblogs.com/springfor/p/3869308.html
Copyright © 2011-2022 走看看