Leetcode 25. Reverse Nodes in k-Group 以每组k个结点进行链表反转(链表)

题目描述

已知一个链表,每次对k个节点进行反转,最后返回反转后的链表

测试样例

Input: k = 2, 1->2->3->4->5
Output: 2->1->4->3->5 Input: k = 3, 1->2->3->4->5
Output: 3->2->1->4->5

详细分析

按照题目要求做就行了:比如k=2,首先[1->2->3->4->5]分组为[1->2],[3->4],[5],然后每组反转[2->1],[4->3],[5],最后输出反转后的链表[2->1->4->3->5]。

算法实现

class Solution {
public:
ListNode* reverseKGroup(ListNode* head, int k) {
if(head==nullptr || k==1){
return head;
} ListNode * cur = head;
while(true){
partialReverse(cur,k); for(int i=0;i<k;i++){
cur=cur->next;
if(cur==nullptr){
return head;
}
}
}
} // it's a closed interval
void partialReverse(ListNode * start,int k){
// 1->2
// 1->2->3->4->5
std::stack<int> vec;
ListNode * temp = start;
for(int i=0;i<k;i++){
vec.push(temp->val);
temp = temp->next;
if(i!=k-1 && temp==nullptr){
return;
}
} for(int i=0;i<k;i++){
int val = vec.top();
vec.pop();
start->val = val;
start=start->next;
}
}
};

Leetcode 25. Reverse Nodes in k-Group 以每组k个结点进行链表反转(链表)的更多相关文章

  1. [LeetCode] 25. 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  ...

  2. 蜗牛慢慢爬 LeetCode 25. Reverse Nodes in k-Group [Difficulty: Hard]

    题目 Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. ...

  3. [LeetCode] 25. Reverse Nodes in k-Group ☆☆☆

    Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. k  ...

  4. [leetcode]25. 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  ...

  5. LeetCode 25 Reverse Nodes in k-Group Add to List (划分list为k组)

    题目链接: https://leetcode.com/problems/reverse-nodes-in-k-group/?tab=Description   Problem :将一个有序list划分 ...

  6. [LeetCode]25. 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 ...

  7. [leetcode 25]Reverse Nodes in k-Group

    1 题目: Given a linked list, reverse the nodes of a linked list k at a time and return its modified li ...

  8. Java [leetcode 25]Reverse Nodes in k-Group

    题目描述: Given a linked list, reverse the nodes of a linked list k at a time and return its modified li ...

  9. [Leetcode][Python]25: Reverse Nodes in k-Group

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 25: Reverse Nodes in k-Grouphttps://oj. ...

随机推荐

  1. leetcode766

    本题经过一下午的思考,终于解出来了.使用的是层次遍历的思想. class Solution { public: bool isToeplitzMatrix(vector<vector<in ...

  2. python的ftplib模块

    Python中的ftplib模块 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件 FTP的工作流程及基本操作可参考协议RFC95 ...

  3. linux上的第一个c语言程序

    1.编辑源文件 输入命令如下: root@ubuntu:/home/amy# vi hello.c 文件内容如下: #include<stdio.h> int main() { print ...

  4. zookeeper伪集群的搭建

    由于公司服务器数量的限制,我们往往没有那么多的服务器用来搭建zookeeper的集群,所以产生了伪集群的搭建,也就是将多个zookeeper搭建在同一台机器上. 准备工作: 1,一台服务器,我们这里用 ...

  5. C#支持的编码格式

    转自: http://www.java2s.com/Book/CSharp/0040__Essential-Types/Get_all_supported_encodings.htm using Sy ...

  6. codeforce469DIV2——C. Zebras

    题意 0, 010, 01010 这一类的01交替且开头和结尾都为0的序列被称为zebra序列.给出一段01序列,尝试能否把他分为k个子序列使得每个子序列都是zebra序列. 分析 这个题应该算是水题 ...

  7. 【Leetcode009】Palindrome Number

    问题链接:https://leetcode.com/problems/palindrome-number/#/description Question:Determine whether an int ...

  8. spark源码阅读之network(2)

    在上节的解读中发现spark的源码中大量使用netty的buffer部分的api,该节将看到netty核心的一些api,比如channel: 在Netty里,Channel是通讯的载体(网络套接字或组 ...

  9. javascript总结9:JavaScript三目运算符

    1 三元表达式: 表达式?结果1:结果2: 如果表达式结果为true,执行结果1,如果表达式结果为false,执行结果2. 可以理解为if else  的另外一种写法. 例: var m = 10; ...

  10. UVa 10245 The Closest Pair Problem (分治)

    题意:给定 n 个点,求最近两个点的距离. 析:直接求肯定要超时的,利用分治法,先把点分成两大类,答案要么在左边,要么在右边,要么一个点在左边一个点在右边,然后在左边或右边的好求,那么对于一个在左边一 ...