链表相关题目

  • reverseList

  • 题目链接:https://leetcode.com/problems/reverse-linked-list/

  • swapPairs

  • 题目链接 https://leetcode.com/problems/swap-nodes-in-pairs/

  • 解题思路: 链表题目太考验代码能力了,本题主要是要画出a->b->c的变换过程 a指向c,然后由b指向a,还需要保存一个pre指针,保存a迁移到c的时候保存a,用来指向c。或者有d的话用来指向d。

  • 代码 https://raw.githubusercontent.com/evenX86/designPatternTraining/master/src/main/java/io/github/evenX86/leetCode/SolutionSwapPairs.java

  • hasCycle

  • 题目链接: https://leetcode.com/problems/linked-list-cycle/

  • 解题思路: 思路很清奇,龟兔赛跑,分为一个快指针(->next->next)慢指针(->next),两者有重合的时候链表肯定有环

  • 代码见github

  • detecCycle

  • 题目链接: https://leetcode.com/problems/linked-list-cycle-ii/

  • 解题思路 :在第一版的基础上找到meet node 后找到start node; 代码简单,但蕴含代码背后的数学证明比较复杂,推荐视频讲解:https://www.youtube.com/watch?v=LUm2ABqAs1w; 可以证明head to start node 要走的路径和meet node 到start node 要走的路径 * loop 的整数倍是相同. 所以reset to head之后开始走和meet node开始走,肯定可以共同走到start node(https://www.youtube.com/watch?v=LUm2ABqAs1w)

  • 代码见github

  • reverseKGroup

  • 题目链接: https://leetcode.com/problems/reverse-nodes-in-k-group/

  • 解题思路: 其实就是分成了多个group的reverseList,关键在于需要保存一个指向下一个group的指针。

  • 代码见github

你可能感兴趣的:(链表相关题目)