面試題:對NotNull欄位插入Null值 有啥現象?
阿新 • • 發佈:2020-11-12
給定一個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。
請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 O(1),時間複雜度應為 O(nodes),nodes 為節點總數
輸入: 1->2->3->4->5->NULL
輸出: 1->3->5->2->4->NULL
/** * 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 oddEvenList(ListNode head) { if(head==null) //為空直接返回head return head; ListNode evenHead = head.next; //偶數鏈的頭節點 ListNode odd=head,even=evenHead; // 兩個指標分別指向奇數節點和偶數節點 while(even!=null&&even.next!=null){ // 當偶數節點為空或者偶數節點的下一個節點為空時 while結束 odd.next = even.next; //odd 指向 even的下一個節點(奇數節點) odd = odd.next; //odd後移 (even的下一個節點) even.next = odd.next; // even指向 odd的下一個節點(偶數節點) even = even.next; //even後移 (odd的下一個節點) } odd.next = evenHead; //將偶數連結到奇數鏈後 return head; } }