35. 翻转链表

描述

翻转一个链表

样例

给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null

挑战

在原地一次翻转完成

代码

/**
 * Definition for ListNode.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int val) {
 *         this.val = val;
 *         this.next = null;
 *     }
 * }
 */
  1. 两根指针
public class Solution {
    /*
     * @param head: n
     * @return: The new head of reversed linked list.
     */
    public ListNode reverse(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        
        ListNode prev = null;
        while (head != null) {
            ListNode temp = head.next;
            head.next = prev;
            // 两行的赋值顺序别写反了
            prev = head;
            head = temp;
        }
        
        return prev;
    }
}
  1. 用递归
public class Solution {
    /*
     * @param head: n
     * @return: The new head of reversed linked list.
     */
    public ListNode reverse(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        
        // 从 head.next 开始所有链表全部被翻转
        // 但不包括 head.next 的前向指针
        ListNode p = reverse(head.next);
        head.next.next = head;
        head.next = null;
        
        // 返回链表头结点
        return p;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 描述 翻转一个链表 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null 挑...
    6默默Welsh阅读 480评论 0 1
  • 样例给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null 复制链表节点,一个一个放...
    和蔼的zhxing阅读 398评论 0 0
  • 题目 描述 翻转一个链表 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->nul...
    悠扬前奏阅读 307评论 0 0
  • //leetcode中还有花样链表题,这里几个例子,冰山一角 求单链表中结点的个数----时间复杂度O(n)这是最...
    暗黑破坏球嘿哈阅读 1,692评论 0 6
  • 秋里的芙蓉葵,花瓣硕大妩媚,质厚柔润。无论是紫色的,仰或粉色白色的,无不艳丽妖娆。夕阳下,光影四射,花瓣摇...
    太行客阅读 811评论 0 0

友情链接更多精彩内容