反向单链表

时间:2016-05-04 01:26:14

标签: java 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 

但是当我想确定这是正确的方法时,我在网上看到的所有解决方案看起来都像Reverse single linked list所以我开始质疑自己......我的解决方案出了什么问题?时间复杂度看起来像O(n)空间com。 O(1)......我错了吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

不确定你在问什么。您的实现看起来几乎就像链接中的那个。对于时间复杂度,两种实现都是O(n),对于空间复杂度,两种实现都是O(1)。当然,对于空间复杂性,列表本身是O(n)