我正在实施“反向单链表,就地执行”任务。我提出了这个解决方案:
/**
* 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)......我错了吗?提前谢谢!
答案 0 :(得分:0)
不确定你在问什么。您的实现看起来几乎就像链接中的那个。对于时间复杂度,两种实现都是O(n)
,对于空间复杂度,两种实现都是O(1)
。当然,对于空间复杂性,列表本身是O(n)
。