题解 | #链表中的节点每k个一组翻转#

链表中的节点每k个一组翻转

http://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param head ListNode类 
# @param k int整型 
# @return ListNode类
#
class Solution:
    def reverseKGroup(self , head: ListNode, k: int) -> ListNode:
        # write code here
        new_head = ListNode(-1)
        new_head.next = head
        pre_node = new_head
        while True and pre_node:
            current_node = pre_node.next
            last_node = current_node
            for i in range(1,k):
                if not last_node:
                    return new_head.next
                last_node = last_node.next
            if not last_node:
                return new_head.next
            next_node = last_node.next
            a,b = self.reverse(current_node,last_node)
            pre_node.next = a
            b.next = next_node
            pre_node = b
        return new_head.next
    
    def reverse(self,a,b):
        new_head = ListNode(-1)
        temp = a 
        b.next = None
        while temp:
            new_temp = temp.next
            temp.next = new_head.next
            new_head.next = temp
            temp = new_temp
        return b,a
全部评论

相关推荐

06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务