25. K 个一组翻转链表
生活随笔
收集整理的這篇文章主要介紹了
25. K 个一组翻转链表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
25. K 個一組翻轉鏈表
給你一個鏈表,每 k 個節點一組進行翻轉,請你返回翻轉后的鏈表。
k 是一個正整數,它的值小于或等于鏈表的長度。
如果節點總數不是 k 的整數倍,那么請將最后剩余的節點保持原有順序。
進階:
你可以設計一個只使用常數額外空間的算法來解決此問題嗎?
你不能只是單純的改變節點內部的值,而是需要實際進行節點交換。
示例 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)// 遞歸,反轉剩余的列表,原來的頭結點反轉后就變成了現在的尾節點,再把反轉之后的剩余列表拼起來head.Next = reverseKGroup(current, k)// 返回新的頭結點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 }總結
以上是生活随笔為你收集整理的25. K 个一组翻转链表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 隐形毒蝎剧情介绍
- 下一篇: asp.net core 的webapi