K 个一组翻转链表Python解法
生活随笔
收集整理的這篇文章主要介紹了
K 个一组翻转链表Python解法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給你一個鏈表,每 k 個節點一組進行翻轉,請你返回翻轉后的鏈表。
k 是一個正整數,它的值小于或等于鏈表的長度。
如果節點總數不是 k 的整數倍,那么請將最后剩余的節點保持原有順序。
進階:
你可以設計一個只使用常數額外空間的算法來解決此問題嗎?
你不能只是單純的改變節點內部的值,而是需要實際進行節點交換。
?
示例 1:
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group
?
例:
輸入:head = [1,2,3,4,5], k = 3 輸出:[3,2,1,4,5]解析:每k個節點一個輪回,然后在輪回里進行“掉頭”,用開頭指向下一個輪回開頭,然后后面的節點一一接上。最后不足k個節點不進輪回。
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution(object):def reverseKGroup(self, head, k):""":type head: ListNode:type k: int:rtype: ListNode"""cur = headcount = 0while cur and count != k: # 將cur標記在下一個輪回的頭節點cur = cur.nextcount += 1if count == k: # 輪回cur = self.reverseKGroup(cur, k) # 將指針指向后續排序好的鏈表while count:tmp = head.next # 先將二號為標記head.next = cur # 將輪回1的頭節點的next節點指向下一個輪回的頭節點cur = head # cur指針作為被指向的節點head = tmp # 頭指針指向剛剛標記好的二號節點count -= 1 # 每完成一次排序,就將計數減少1head = cur # 最后的cur指針指向當前輪回更新后的第一個節點return head # 返回當前輪回總結
以上是生活随笔為你收集整理的K 个一组翻转链表Python解法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两两交换链表中的节点Python解法
- 下一篇: 最后一个单词的长度Python解法