• LeetCoded第206题题解--反转链表


    反转一个单链表。

    示例
    输入: 1->2->3->4->5->NULL
    输出: 5->4->3->2->1->NULL

    方法一:递归

    自始至终每个递归返回的都应该是最后一个节点,每次递归将head.next指向head
    在这里插入图片描述
    代码

    	public static ListNode reverseList(ListNode head) {
            if (head==null||head.next==null){
                return head;
            }
            ListNode listNode = reverseList(head.next);
            head.next.next=head;
            head.next=null;
            return listNode;
        }
    

    方法二:迭代

    使用三个指针,pre指向前一个节点,cur指向当前节点,next指向下一个节点,让cur指向pre,并向后循环操作
    在这里插入图片描述

        public static ListNode reverseList2(ListNode head) {
            ListNode pre = null;
            ListNode cur = head;
            while (cur!=null){
                ListNode next = cur.next;
                cur.next = pre;
                pre = cur;
                cur = next;
            }
            return pre;
        }
    
  • 相关阅读:
    AVFrame与Mat
    conda警告
    MS COCO数据集格式
    ubuntu卡在工作区切换界面
    C++编程便捷口
    Anaconda相关问题
    处理memory output
    ajax 上传form表单
    元类 metaclass
    小菜一碟
  • 原文地址:https://www.cnblogs.com/zhangguangxiang/p/14232495.html
Copyright © 2020-2023  润新知