zoukankan      html  css  js  c++  java
  • LeetCode

    Reverse a singly linked list.

    Example:

    Input: 1->2->3->4->5->NULL
    Output: 5->4->3->2->1->NULL
    

    Follow up:

    A linked list can be reversed either iteratively or recursively. Could you implement both?

    反转单链表,看到我好几年前通过的代码居然是用List遍历保存之后再倒序遍历反转,然而还RE了好几次。。。往事突然浮现在脑海,没忍住又重写了一下。

    耗时0ms

    class Solution {
        public ListNode reverseList(ListNode head) {
            ListNode cur = head, prev = null, temp = null;
            while (cur != null) {
                temp = cur.next;
                cur.next = prev;
                prev = cur;
                cur = temp;
            }
            return prev;
        }
    }

    以前的代码是这样的(耗时464ms):

    public class Solution {
        public ListNode reverseList(ListNode head) {
            if(head == null || head.next == null)
                return head;
            ArrayList<Integer> list = new ArrayList<Integer>();
            ListNode p = head;
            while(p!=null) {
                list.add(p.val);
                p = p.next;
            }
            ListNode q = head;
            for(int i=list.size()-1; i>=0; i--) {
                q.val = list.get(i);
                q = q.next;
            }
            return head;
            
        }
    }
  • 相关阅读:
    PMO的重要性
    idea CPU过高问题
    近期面试心得
    Spring-Eureka
    BIO/NIO
    redis redlock
    nmon 安装及使用 【linux环境】
    一致性hash 算法
    gossip协议了解
    00008
  • 原文地址:https://www.cnblogs.com/wxisme/p/9885705.html
Copyright © 2011-2022 走看看