LeetCode Reverse Nodes in k-Group
来源:互联网 发布:网络棋牌游戏赌博平台 编辑:程序博客网 时间:2024/05/18 21:47
LeetCode解题之Reverse Nodes in k-Group
原题
将一个链表中每k个数进行翻转,末尾不足k个的数不做变化。
注意点:
- 不允许修改节点的值
- 只能用常量的额外空间
例子:
输入: head = 1->2->3->4->5, k = 2
输出: 2->1->4->3->5
输入: head = 1->2->3->4->5, k = 3
输出: 3->2->1->4->5
解题思路
这个题是Swap Nodes in Pairs的升级版。我们来看一下翻转k个节点要进行哪些操作,A->B->C->D->E,现在我们要翻转BCD三个节点。进行以下几步:
- C->B
- D->C
- B->E
- A->D
- 返回及节点B
上面做了两件事,把k个节点先翻转(1、2两步),再和前后两个节点连接起来(3、4两步)。
AC源码
# 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 """ if not head or k <= 1: return head dummy = ListNode(-1) dummy.next = head temp = dummy while temp: temp = self.reverseNextK(temp, k) return dummy.next def reverseNextK(self, head, k): # Check if there are k nodes left temp = head for i in range(k): if not temp.next: return None temp = temp.next # The last node when the k nodes reversed node = head.next prev = head curr = head.next # Reverse k nodes for i in range(k): nextNode = curr.nex curr.next = prev prev = curr curr = nextNode # Connect with head and tail node.next = curr head.next = prev return node
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
0 0
- LeetCode:Reverse Nodes in k-Group
- LeetCode: Reverse Nodes in k-Group
- LeetCode : Reverse Nodes in k-Group
- leetcode 42: Reverse Nodes in k-Group
- [Leetcode] reverse nodes in K-Group
- [LeetCode]Reverse Nodes in k-Group
- LeetCode-Reverse Nodes in k-Group
- LeetCode - Reverse Nodes in k-Group
- LeetCode | Reverse Nodes in k-Group
- 【leetcode】Reverse Nodes in k-Group
- Leetcode: Reverse Nodes in k-Group
- leetcode Reverse Nodes in k-Group
- [LeetCode] Reverse Nodes in k-Group
- LeetCode题解: Reverse Nodes in k-Group
- 【Leetcode】Reverse Nodes in k-Group
- LeetCode Reverse Nodes in k-Group
- [Leetcode] Reverse Nodes in k-Group (Java)
- LeetCode(25)Reverse Nodes in K-Group
- ADB常用命令
- 进程线程及堆栈关系的总结
- asp.net中web.config配置节点大全详解
- 动态追加标签,获取某标签下的标签个数
- Android四角形状(角度)不规则ImageView方案
- LeetCode Reverse Nodes in k-Group
- mybatis通过配置文件方式整合redis缓存,替换mybatis二级缓存
- 【剑指offer】2.3.4树——面试题6:重建二叉树
- Asp.net学习笔记
- HTML5缓存机制浅析:移动端Web加载性能优化
- apache中使用mod_log_slow分析响应慢的请求
- quartz 定时器cron表达式全解析
- php中\r \r\n \t的区别示例介绍
- linux下如何获取cpu的利用率