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

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

https://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
        if k <= 0 :			#防护非法输入
            return head
        
        if not head :		#防护空输入
            return head
        
        if head.next == None :		#防护特殊输入
            return head
		# 基本思路:将列表用临时数组保存,利用python切片反转,完成后将反转之后的数组组装为列表
        temp_list = []
        while head:
            temp_list.append(head.val)
            head = head.next
        result_list = []
        manstart_index = 0
        manend_index = manstart_index + k
        while True:
            if manend_index > len(temp_list):
                result_list.append(temp_list[manstart_index:])
                break
            result_list.append(temp_list[manstart_index:manend_index][::-1])
            manstart_index += k
            manend_index = manstart_index + k
        rvs_list = []
        for i in result_list:
            rvs_list += i
        result = ListNode(-1)
        pre_node = result
        for i in rvs_list:
            pre_node.next = ListNode(i)
            pre_node = pre_node.next
        
        return result.next

全部评论

相关推荐

10-06 12:46
门头沟学院 Java
跨考小白:定时任务启动
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务