繁体   English   中英

反向单链表

[英]Reverse single linked list

我正在实施“反向单链表,就地执行”任务。 我想出了这个解决方案:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode reverseList(ListNode head) {
        if (head == null) {
            return null;
        }

        if(head.next==null) return head;

        ListNode n = head;
        ListNode r = null;
        ListNode temp = null;

        while (n != null) {
            temp = n;
            n = n.next;
            temp.next = r;
            r = temp;
        }

        return r;
    }
}

它有效:

1 2 3 4 5 
5 4 3 2 1 

但是当我想确保它是正确的方法时,我在网上看到的所有解决方案看起来都像反向单链表,所以我开始质疑自己......我的解决方案有什么问题? 时间复杂度看起来像 O(n) 空间 com。 O(1)...我错了吗? 提前致谢!

不确定你在问什么。 您的实现与链接中的实现几乎一模一样。 两种实现的时间复杂度均为O(n) O(1) ,空间复杂度为O(1) 当然,列表本身的空间复杂度是O(n)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM