前往
大廳
主題

LeetCode - 1721. Swapping Nodes in a Linked List 解題心得

Not In My Back Yard | 2021-12-04 00:00:01 | 巴幣 0 | 人氣 574

題目連結:


題目意譯:
你被給定一個連結串列(Linked List)的開頭節點 head,以及一整數 k。

回傳將從開頭到結尾的第 k 個節點與從結尾到開頭的第 k 個節點交換後的連結串列之開頭節點(串列索引值從 1 開始)。

限制:
串列節點數為 n。
1 ≦ k ≦ n ≦ 10 ^ 5
0 ≦ Node.val ≦ 100



範例測資:
範例 1:
輸入: head = [1,2,3,4,5], k = 2
輸出: [1,4,3,2,5]

範例 2:
輸入: head = [7,9,6,6,7,8,3,0,9,5], k = 5
輸出: [7,9,6,6,8,7,3,0,9,5]

範例 3:
輸入: head = [1], k = 1
輸出: [1]

範例 4:
輸入: head = [1,2], k = 1
輸出: [2,1]

範例 5:
輸入: head = [1,2,3], k = 2
輸出: [1,2,3]


解題思維:
就是單純地先掃過一次串列統計其長度 n 值為何。然後再掃過一次,而這次便可以求得第 k 個節點以及第 n - k + 1 節點(即從尾端到開頭的第 k 個節點),並將兩者交換。

不過當 k = n - k + 1 時,代表我們會存取到同一個節點,此時則不需要交換(正確來說,交換了等同於沒有交換)。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作