本地IDE VsCode调试链表题(python)

这篇博客详细介绍了如何使用Python解决LeetCode中的第25题,即K个一组翻转链表。通过定义ListNode类、创建链表、打印链表以及实现反转链表的函数,博主展示了如何将链表按K个节点一组进行翻转,并给出了完整的代码实现。最后,用实例验证了代码的正确性,输出了翻转后的链表。
摘要由CSDN通过智能技术生成

本地IDE VsCode调试链表题(python)

以LeetCode 25. K 个一组翻转链表为例

#定义ListNode()
class ListNode():
    def __init__(self, x):
        self.val = x
        self.next = None
        
#将传入的数组转化为链表
def create_linked_list(arr):
    head = ListNode(arr[0])
    cur = head
    for i in range(1, len(arr)):
        cur.next = ListNode(arr[i])
        cur = cur.next
    return head
    
#传入链表头节点,以数组形式返回
def print_linked_list(head):
    cur = head
    res = []
    while cur:
        res.append(cur.val)
        cur = cur.next
    return res

class Solution:
    def reverseKGroup(self, head: ListNode, k: int) -> ListNode:
        dummy = ListNode(0) # 本来在LeetCode写listNode()也行,但这里不可
        dummy.next = head
        left, right = dummy, head
        cnt = 0
        while right:
            cnt += 1
            right = right.next
            if cnt % k  == 0:
                left = self.reverse(left, right)
        return dummy.next



    def reverse(self, left, right): # left指待反转部分的前一个节点,right指待反转部分的后一个节点
        pre, cur = left, left.next
        first, last = pre, cur 
        while cur != right:
            tmp = cur.next
            cur.next = pre
            pre = cur
            cur = tmp

        first.next = pre
        last.next = right
        return last 

if __name__ == "__main__":
    head = [1,2,3,4,5]
    head = create_linked_list(head)
    s = Solution()
    k = 2
    sorted_lists = s.reverseKGroup(head, k)
    print(print_linked_list(sorted_lists))
	# [2, 1, 4, 3, 5]

个人LeetCode题解(python版本):https://github.com/cielzzz/AlgorithmNotes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值