article Annuaire
Titre description
Compte tenu de la liste d'échange par paires avec des noeuds adjacents, et la renvoyer à l'échange. Vous ne pouvez pas tout simplement modifier les valeurs des nœuds internes , mais doivent être l'échange de nœud réel.
exemple:
1- donné> 2-> 3-> 4, vous devez retourner 2-> 1-> 4-> 3.
problème solution
La liste semble solution sujet, souvent itératif et récursif.
méthode itérative (java)
idées:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
// Dummy node acts as the prevNode for the head node
// of the list and hence stores pointer to the head node.
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode prevNode = dummy;
while ((head != null) && (head.next != null)) {
// Nodes to be swapped
ListNode firstNode = head;
ListNode secondNode = head.next;
// Swapping
prevNode.next = secondNode;
firstNode.next = secondNode.next;
secondNode.next = firstNode;
// Reinitializing the head and prevNode for next swap
prevNode = firstNode;
head = firstNode.next; // jump
}
// Return the new head node.
return dummy.next;
}
}
Analyse de complexité
- complexité du temps: O (n)
- la complexité de l'espace: O (1)
Récursif (java)
Idées: deux nœuds en tant que groupe. Deux noeuds chaque position d'échange, le reste du fond et le noeud continue le traitement récursif. Chaque fois que le processus retourne à l'entrée de tous les noeuds.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
// If the list has no node or has only one node left.
if ((head == null) || (head.next == null)) {
return head;
}
// Nodes to be swapped
ListNode firstNode = head;
ListNode secondNode = head.next;
// Swapping
firstNode.next = swapPairs(secondNode.next);
secondNode.next = firstNode;
// Now the head is the second node
return secondNode;
}
}
- complexité du temps: O (n)
- la complexité de l'espace: O (n)