日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

25. K 个一组翻转链表

發(fā)布時(shí)間:2023/11/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 25. K 个一组翻转链表 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

25. K 個(gè)一組翻轉(zhuǎn)鏈表

給你一個(gè)鏈表,每 k 個(gè)節(jié)點(diǎn)一組進(jìn)行翻轉(zhuǎn),請(qǐng)你返回翻轉(zhuǎn)后的鏈表。

k 是一個(gè)正整數(shù),它的值小于或等于鏈表的長度。

如果節(jié)點(diǎn)總數(shù)不是 k 的整數(shù)倍,那么請(qǐng)將最后剩余的節(jié)點(diǎn)保持原有順序。

進(jìn)階:

你可以設(shè)計(jì)一個(gè)只使用常數(shù)額外空間的算法來解決此問題嗎?
你不能只是單純的改變節(jié)點(diǎn)內(nèi)部的值,而是需要實(shí)際進(jìn)行節(jié)點(diǎn)交換。

示例 1:

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

code

/*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*/ func reverseKGroup(head *ListNode, k int) *ListNode {// 判斷長度是否夠 K,不夠就直接返回了current := headfor i := 0; i < k; i++ {if current == nil {return head}current = current.Next}pre := reverseList(head, current)// 遞歸,反轉(zhuǎn)剩余的列表,原來的頭結(jié)點(diǎn)反轉(zhuǎn)后就變成了現(xiàn)在的尾節(jié)點(diǎn),再把反轉(zhuǎn)之后的剩余列表拼起來head.Next = reverseKGroup(current, k)// 返回新的頭結(jié)點(diǎn)return pre }func reverseList(head *ListNode, current *ListNode) *ListNode {if head == current || head.Next == current {return head}temp := headnode := reverseList(head.Next, current)temp.Next.Next = temptemp.Next = currentreturn node }

總結(jié)

以上是生活随笔為你收集整理的25. K 个一组翻转链表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。