Ich implementierte die "reverse single linked list, do-in-place" Aufgabe. Ich kam mit dieser Lösung:Umgekehrte einzelne verkettete Liste
/**
* 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;
}
}
und es funktioniert:
1 2 3 4 5
5 4 3 2 1
aber wenn ich wollte sicher sein, es ist der richtige Ansatz, alle Lösungen Ich habe Online wie die Reverse single linked list so aussehen gesehen I fing an, mich selbst zu befragen ... Was ist los mit meiner Lösung? Die Zeitkomplexität sieht wie O (n) space com aus. O (1) ... liege ich falsch? Danke im Voraus!
Ihre Lösungen sieht gut aus mir. Ich habe einen Check gegen leetcode (https://leetcode.com/) und es bestanden alle Testfälle gut. Nur weil es andere beliebte Lösungen gibt, ist Ihre eigene Lösung falsch. – MSameer
Komplexität muss mindestens in der Größenordnung von n sein, da Sie die Zeigerrichtung für jeden Knoten in der Liste wechseln müssen – mangusta
Ich weiß, dass Zeit compl muss O (n) sein, aber was ist mit Raum? Passt meine Lösung zu der Anforderung von Raum compl O (1)? – grape