zoukankan      html  css  js  c++  java
  • Leetcode206_反转链表

    题目地址

    反转一个单链表,使用迭代和递归的方法

    • 旧链表头删法,新链表头插法
    • 维护head节点的前驱和后继
    • 递归,对于head的链表,先递归处理head.next的链表,一开始以为要返回尾节点来指向head,但其实尾节点一直就是head.next,所以直接head.next.next指向head即可

    code1

    class Solution {
        public ListNode reverseList(ListNode head) {
            ListNode newHead=null;
            while(head!=null){
                //旧链表头删法
                ListNode tmp=head;
                head=head.next;
                //新链表头插法
                tmp.next=newHead;
                newHead=tmp;
            }
            return newHead;
        }
    }
    

    code2

    class Solution {
        public ListNode reverseList(ListNode head) {
            if(head==null){
                return null;
            }
            ListNode pre=null;
            ListNode nex=head.next;
            while(head!=null){
                head.next=pre;
                pre=head;
                head=nex;
                if(nex!=null){
                    nex=nex.next;
                }
            }
            return pre;
        }
    }
    

    code3

    class Solution {
        public ListNode reverseList(ListNode head) {
            if(head==null || head.next==null){
                return head;
            }
            ListNode tmp=reverseList(head.next);
            head.next.next=head;
            head.next=null;
            return tmp;
        }
    }
    
  • 相关阅读:
    Java实现计数排序
    Java实现计数排序
    Java实现计数排序
    Java实现计数排序
    Java实现计数排序
    Java实现完美洗牌算法
    Java实现完美洗牌算法
    Java实现完美洗牌算法
    Java实现完美洗牌算法
    Java实现完美洗牌算法
  • 原文地址:https://www.cnblogs.com/zxcoder/p/12294592.html
Copyright © 2011-2022 走看看