ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

反转链表_206_92

2022-04-08 19:00:21  阅读:173  来源: 互联网

标签:head ListNode cur 206 next 链表 92 节点


LeetCode_206.反转链表:https://leetcode-cn.com/problems/reverse-linked-list/

题目描述:

  给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

思路1:迭代实现
    就是从头开始遍历,在遍历链表的时候,将当前节点的next指针改为指向前一个节点。
    由于节点没有引用前一个节点,故需要先定义一个头节点prev,保证原来的链表第一个节点指向该节点。
    遍历的时候,需要保留下一个待遍历的节点。
    遍历的终止条件是:当前节点cur,不为空。
    
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode prev = null;
        ListNode cur = head;
        while(cur != null) {
            ListNode next = cur.next;
            cur.next = prev;
            prev = cur;
            cur = next;
        }
        return prev;
    }
}

思路2:递归
    递归的精髓在于,不要在意递归的过程,直接想递归的结果。
    就是假设链表的其余部分已经被反转
    比如,ListNode p = reverseList(head.next);  表示原链表的head.next部分已经完成了反转,
    现在应该如何反转它前面的部分?
    head.next = null;
    head.next.next = head;
    return p; 即可
    必须注意递归的终止条件:当head为空或者head.next为空的时候。
class Solution { public ListNode reverseList(ListNode head) { if (head == null || head.next == null) { return head; } ListNode newHead = reverseList(head.next); head.next.next = head; head.next = null; return newHead; } }

LeetCode_92:反转链表的指定区间:https://leetcode-cn.com/problems/reverse-linked-list-ii/

题目描述:

  给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回反转后的链表 。
  ada

 

标签:head,ListNode,cur,206,next,链表,92,节点
来源: https://www.cnblogs.com/pfzhang18/p/16119282.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有