promethues 整合eureka 服務發現
阿新 • • 發佈:2020-12-04
題目:
給定一個連結串列,兩兩交換其中相鄰的節點,並返回交換後的連結串列。
你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。
示例 1:
輸入:head = [1,2,3,4]
輸出:[2,1,4,3]
示例 2:
輸入:head = []
輸出:[]
示例 3:
輸入:head = [1]
輸出:[1]
程式碼:
/**
-
Definition for singly-linked list.
-
public class ListNode {
-
int val;
-
ListNode next;
-
ListNode() {}
-
ListNode(int val) { this.val = val; }
-
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
-
}
*/
class Solution {
public ListNode swapPairs(ListNode head) {if(head==null||head.next==null){ //空或長度為1直接返回 return head; } ListNode pre=head; ListNode p=head; ListNode q=head.next; while(true){ if(pre==p){ //頭節點單獨處理 p.next=q.next; q.next=p; head=q; if(p.next!=null&&p.next.next!=null){ p=p.next; q=p.next;} else{break;} } else{ p.next=q.next; q.next=p; pre.next=q; pre=p; if(p.next!=null&&p.next.next!=null){ p=p.next; q=p.next;} else{break;} } } return head;
}
}