LeetCode——1721.交换链表中的节点
生活随笔
收集整理的這篇文章主要介紹了
LeetCode——1721.交换链表中的节点
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
方法一:好理解,但是需要遍歷三次鏈表
方法二,值遍歷一次,但是要注意指針的挪動(dòng)次數(shù)關(guān)系的理解
/**聲明三個(gè)節(jié)點(diǎn)cur、first、last全部指向head節(jié)點(diǎn)利用current從頭結(jié)點(diǎn)開始遍歷鏈表,topK指針移動(dòng)k - 1步后定位至該鏈表正數(shù)第k個(gè)節(jié)點(diǎn),設(shè)鏈表的節(jié)點(diǎn)個(gè)數(shù)為nums,當(dāng)first指針指向第k個(gè)節(jié)點(diǎn)時(shí),此時(shí)鏈表還有nums - k個(gè)節(jié)點(diǎn)沒有遍歷。因?yàn)殒湵淼念^節(jié)點(diǎn)到倒數(shù)第k個(gè)節(jié)點(diǎn)之間的節(jié)點(diǎn)個(gè)數(shù)剛好也是nums - k個(gè),所以當(dāng)遍歷到正數(shù)第k個(gè)節(jié)點(diǎn)后,botK指針開始從head節(jié)點(diǎn)移動(dòng)nums - k步后即指向了倒數(shù)第k個(gè)節(jié)點(diǎn)。 */ class Solution {public ListNode swapNodes(ListNode head, int k) {ListNode current = head;ListNode topK = head;ListNode botK = head;int count = 1;while(current.next!=null){ if(count<k){topK = topK.next;}else{botK = botK.next;}count++;current = current.next;}//交換兩個(gè)節(jié)點(diǎn)int temp = topK.val;topK.val = botK.val;botK.val = temp;return head;} }總結(jié)
以上是生活随笔為你收集整理的LeetCode——1721.交换链表中的节点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Centos7制作局域网http的yum
- 下一篇: Java的中排序方式