• 92. 反转链表 II


    题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

    解题思路:

    可以将left和right之间节点的指针反转,即2->3->4反转为2<-3<-4,这样只需要将节点1的next指向节点4,节点2的next指向节点5,即right变为头,left变为尾。

    curr表示当前正在处理的节点,prev表示curr的前驱,还需要额外记录2个关键节点:

    1. beginPre:第left个节点的前驱
    2. begin:第left个节点

    依次将left到right之间的节点进行上面所述的链表反转,每次链表反转时令curr.next=prev,但此时,curr的后继节点会丢失,在反转之前,令next=curr.next。之后就可以将left到right之间的节点依次反转了:

    1. pre=curr
    2. curr=next:curr指向反转之前的后继节点
    3. next=curr.next:current的后继
    4. curr.next=prev:反转链表
    5. count++(count记录已经处理到第i个节点,count==right时结束反转)

    反转结束后,此时,curr节点就是第right个节点,next节点就是right的后继节点,令:

    1. beginPrev.next=curr
    2. begin.next=next

    即可将反转后的链表与原链表链接上

    AC代码:
     

    1. /**
    2. * Definition for singly-linked list.
    3. * public class ListNode {
    4. * int val;
    5. * ListNode next;
    6. * ListNode() {}
    7. * ListNode(int val) { this.val = val; }
    8. * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    9. * }
    10. */
    11. class Solution {
    12. public ListNode reverseBetween(ListNode head, int left, int right) {
    13. if (left==right){
    14. return head;
    15. }
    16. ListNode dumpy = new ListNode();
    17. dumpy.next=head;
    18. ListNode pre = dumpy;
    19. ListNode curr = head;
    20. int count =1;
    21. while (count
    22. pre=curr;
    23. curr=curr.next;
    24. count++;
    25. }
    26. //left前面那一个节点
    27. ListNode beginPre =pre;
    28. //left节点
    29. ListNode begin = curr;
    30. //next记录当前节点的下一个节点
    31. ListNode next =curr.next;
    32. //从left节点开始,将后面的节点指向前面的节点
    33. while (count
    34. pre=curr;
    35. curr=next;
    36. next=curr.next;
    37. curr.next=pre;
    38. count++;
    39. }
    40. beginPre.next=curr;
    41. begin.next=next;
    42. return dumpy.next;
    43. }
    44. }

  • 相关阅读:
    iOS制作微信(weChat)支付SDK过程
    你需要知道的 TCP 三次握手
    UML笔记
    少儿编程机器人软件的开发技术
    CSS3_动画
    nodejs连接oracle批量更新数据测试
    阿里架构师十年开发总结的《分布式系统开发学习笔记》太强了
    精确率、准确率、召回率
    Java AOP篇
    Poco库使用:文件压缩和解压缩
  • 原文地址:https://blog.csdn.net/qq_40707370/article/details/133799612