k组倒置链表节点
来源:互联网 发布:女生半袖图片淘宝 编辑:程序博客网 时间:2024/05/21 19:25
k组倒置链表节点
Reverse Nodes in k-Group
- 给定一个链表,每k个倒置其节点,返回新链表的头部,不允许使用额外的内存,只能在原有链表节点基础上进行操作。
题目原文:
- Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.
- k is a positive integer and is less than or equal to the length of the linked list.
- If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.
- You may not alter the values in the nodes, only nodes itself may be changed.
- Only constant memory is allowed.
example 1
Given this linked list: 1->2->3->4->5For k = 2, you should return: 2->1->4->3->5For k = 3, you should return: 3->2->1->4->5
思路
- 参照我的博文成对交换链表节点,讨巧的办法是只交换节点内的value,不做节点的移动。
- 如不使用上述方法,可以使用递归完成
代码
# Definition for singly-linked list.class ListNode(object): def __init__(self, x): self.val = x self.next = Noneclass Solution(object): def reverseKGroup(self, head, k): """ :type head: ListNode :type k: int :rtype: ListNode """ try: arr = [] tmp = head self.k = k for i in range(k): arr.append(tmp) tmp = tmp.next while True: for i in range(k//2): arr[i].val, arr[-1-i].val = arr[-1-i].val, arr[i].val arr = list(map(self.move, arr)) finally: return head def move(self, x): ret = x for i in range(self.k): ret = ret.next return ret
本题以及其它leetcode题目代码github地址: github地址
阅读全文
0 0
- k组倒置链表节点
- 删除链表节点(链表倒置)
- 链表倒数第k个节点
- 链表倒数第k个节点
- 链表倒数第k个节点
- 链表倒数第K个节点
- 链表倒数第k个节点
- 链表倒数第k个节点
- 删除链表倒数k个节点
- 链表倒数第K个节点
- 剑指offer---链表倒数K节点
- 链表倒置
- 链表的倒置
- 链表倒置
- 链表倒置
- 链表倒置
- 实现链表倒置
- 链表倒置(逆序)
- ios-图片类型的上下文
- Namenode 联盟 联邦环境的搭建
- 程序员,感觉技术停滞了怎么办?
- Session一致性配置---Redis
- 微信小程序报错net::ERR_NAME_NOT_RESOLVED
- k组倒置链表节点
- Java集合的Stack、Queue、Map的遍历
- 爬去网络数据的一般思路
- 算法导论【一】——算法作用微论
- 浅谈AC自动机(Aho-Corasick automaton算法)
- System.FormatException: 指定了无效的 IP 地址
- 内存溢出分析总结
- 【English】July's English Story
- markDown编辑器联系使用