刷题-力扣-25

25. K 个一组翻转链表

题目链接

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/

作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目描述

给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。

k 是一个正整数,它的值小于或等于链表的长度。

如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

示例:

给你这个链表:1-2-3-4-5

当 k = 2 时,应当返回: 2-1-4-3-5

当 k = 3 时,应当返回: 3-2-1-4-5

说明:

你的算法只能使用常数的额外空间。

你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

题目分析

根据题目描述,颠倒链表中k个结点

使用栈的后进先出的思想,让链表依次入栈k个到vecNode中

从vecNode中依次从后向前出栈到res的末尾

依次循环直到剩余的结点不够k个

把剩余不够k个的结点添加到res的末尾,res即为所求

代码

/**

* Definition for singly-linked list.

* struct ListNode {

* int val;

* ListNode *next;

* ListNode() : val(0), next(nullptr) {}

* ListNode(int x) : val(x), next(nullptr) {}

* ListNode(int x, ListNode *next) : val(x), next(next) {}

* };

*/

class Solution {

public:

ListNode* reverseKGroup(ListNode* head, int k) {

vectorListNode* vecNode;

ListNode* res = nullptr;

ListNode* p;

while (head) {

int i = 0;

for (i; i k; i++) {

if (head) {

vecNode.push_back(head);

head = head-next;

} else break;

}

if (vecNode.size() != k) break;

for (i; i 0; i--) {

if (res == nullptr) {

res = vecNode[i - 1];

p = res;

}

else {

p-next = vecNode[i - 1];

p = p-next;

p-next = nullptr;

}

}

vecNode.clear();

}

for (int i = 0; i vecNode.size(); i++) {

p-next = vecNode[i];

p = p-next;

p-next = nullptr;

}

return res;

}

};

刷题-力扣-25 相关文章

力扣605. 种花问题

原题 这题代码写得很烂 思路: 将flowerbed数组分段,记录区间端点是0是1,保证每个区间端点以外都是连续的0序列,最后对区间端点进行分类讨论 如flowerbed数组为[0,1,0,0,0,0,1] 则分段为: 【0,1】【1,0,0,0,0,1】 对应区间去除端点外所含0序列长度n

2021.2.10 刷题(判断一棵树是否是二叉搜索树)

题目链接:https://leetcode-cn.com/problems/validate-binary-search-tree 题目描述: 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。

2021.2.10 刷题(构造最大二叉树)

题目链接:https://leetcode-cn.com/problems/maximum-binary-tree 题目描述: 给定一个不含重复元素的整数数组 nums 。一个以此数组直接递归构建的 最大二叉树 定义如下: 二叉树的根是数组 nums 中的最大元素。 左子树是通过数组中 最大值左边部分 递归构

【题解】力扣992. K 个不同整数的子数组

题目来源 992. K 个不同整数的子数组 题目描述:给定一个正整数数组 A ,如果 A 的某个子数组中不同整数的个数恰好为 K ,则称 A 的这个连续、不一定独立的子数组为 好子数组 。 思路 恰好包含K种不同整数的子区间 = 最多包含K种整数的子区间 - 最多包含K-1

力扣567.字符串的排列—C语言实现

题目 来源:力扣(LeetCode)

【PAT刷题】快速产出垃圾——2020-2-9

接昨晚B1024/A1073 (2)参考答案 1 #include cstdio 2 #include cstring 3 4 int main(){ 5 char str[10010]; 6 scanf("%s",str); 7 int len = strlen(str); 8 if(str[0]=='-') printf("-"); //如果是负数,输出负号 9 10 int pos =0;11 while(str[pos]!='E

算法刷题指南来自GitHub 68.8k star的硬核算法教程

很多朋友害怕算法,其实大可不必,算法题无非就那几个套路,一旦掌握,就会觉得算法实在是太朴实无华且枯燥了! 本文选自硬核算法教程 《labuladong的算法小抄》 ,带你学习套路,把握各类算法问题的共性! 数据结构是工具,算法是通过合适的工具解决特定问

luogu集合刷题进阶

昨天光顾着跟kerin聊天忘记存盘了,写到一半的blog就,,,没了 今天主要是绿题 怕怕 , 主要是两个集合之间的东西,,,比如并查集 P1982 反集: 如果a和b是敌人,合并n+b和a,n+a和b 如果c和a是敌人,合并n+c和a,n+a和c 那么b和c就并在一起了 这样就符合了

【题解】力扣978. 最长湍流子数组

题目来源 978. 最长湍流子数组 方法一 滑动窗口,双指针 第一种情况和第二种情况分开讨论 当符合条件的时候, left 不动, right 加1; 不符合条件的时候, left 等于 right ; 窗口长度为 right-left+1 ; 长度为1的时候特判,返回1; 代码 class Solution

LeetCode刷题笔记 - 12. 整数转罗马数字

学好算法很重要,然后要学好算法,大量的练习是必不可少的,LeetCode是我经常去的一个刷题网站,上面的题目非常详细,各个标签的题目都有,可以整体练习,本公众号后续会带大家做一做上面的算法题。 官方链接:https://leetcode-cn.com/problemset/all/ 一、

力扣算法题用c语言实现,刷题-力扣-25相关推荐

  1. 2021新年算法小专题—2.股票买卖利润刷题(Java)

    本篇是股票买卖问题的更多题解,在上一篇文章中我们已经介绍了这一题型,实际上是一类dp问题,我们用自动机的思想去解决,在上一篇中我们以一道限定只买卖一次股票的题目为例进行了讲解,文章链接.下面我们继续完 ...

  2. 一个算法笨蛋的12月leetCode刷题日记

    类似文章 一个算法笨蛋的2021年11月leetCode刷题日记 一个算法笨蛋的2021年12月leetCode刷题日记 一个算法笨蛋的2022年1月leetCode刷题日记 一个算法笨蛋的2022年 ...

  3. C语言百日刷题第七天

    C语言百日刷题第七天 61. 写一个函数isPowerOfTwo判断是不是2的幂次方 62. 写一个函数isPowerOfThree判断是不是3的幂次方 63.n 的第 k 个因子 64.有效的完全平 ...

  4. C语言百日刷题第二天

    C语言百日刷题第二天 11. 统计输入数据的正负个数 12.学生基本信息输入输出 13.杨辉三角的前n行 14.模拟用户登录情景 15.演示多个字符从两端移动,向中间汇聚 16.计算短信费用 17.编 ...

  5. C语言百日刷题第十三天

    前言 今天是刷题第13天,放弃不难,但坚持一定很酷~ 临近期末,再刷一套模拟题 C语言百日刷题第十三天 前言 选择题 判断题 编程题 选择题 1.若由定义int*p1,*p2,m=5,n;以下赋值语句 ...

  6. 算法记录 牛客网 leetcode刷题记录

    算法记录 & 牛客网 & leetcode刷题记录 解题思路 STL容器 常用算法模板 堆排序 插入排序 快速排序 BFS层序遍历 二叉树 JZ55 二叉树的深度 BST(binary ...

  7. C语言百日刷题第五天

    C语言百日刷题第五天 41.实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定 42.实现一个函数来交换两个整数的内容. 43.实现一个函数来进行整型有序数组的二分查找 44.接收一个无符号整型 ...

  8. C语言百日刷题第十天

    前言 今天是刷题第10天,放弃不难,但坚持一定很酷~ 快来跟我一起刷题吧. C语言百日刷题第十天 前言 81.连接两个字符串 82.输入一行字符,分别统计其中英文字母.空格.数字和其他字符的个数. 8 ...

  9. 刷了几千道算法题,我私藏的刷题网站都在这里了

    作者 | Rocky0429 来源 | Python空间(ID: Devtogether) 遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活. ...

  10. 算法岗面试前怎样高效刷题?

    如果不是为了面试 AI工程师刷题有用吗? 把时间都放在项目上不香嘛? 作为一个战五渣,我特地去观察和询问了身边很多精通此道的大神,他们对于"刷题"还是保持着认可的态度: 很清晰地理 ...

最新文章

  1. 【计算机视觉征稿】EI会议推荐|计算机多主题征稿,往届已被EI检索,ICCVDM 2021诚邀您投稿参会!...
  2. 为什么在Ruby中使用`rescue Exception =gt; e`样式不好?
  3. 网页标准HTML5标准较量正酣
  4. keras faster物体检测_【开源项目】特斯拉+树莓派实现车牌识别检测系统
  5. 被边缘化的“卓越亚马逊”
  6. 【PyQt5】QT designer + eclipse 集成开发
  7. server.transfer 无法跳转页面_H5 腾讯地图无法导航
  8. SpringBoot上传文件到本服务器 目录与jar包同级
  9. RBG-D深度相机的相关资料
  10. CSS字体、文本属性
  11. 无线通信设备安装工程概预算编制_电气设备安装工程计价与应用
  12. C#关于该进程无法访问文件,因为该文件正由另一进程使用的错误的一点心得(示例)
  13. 英语四六级必备资料(全网最全)
  14. CST软件基本操作 —2
  15. 微信小游戏关系链的使用(排行榜的显示)
  16. 零基础转行学编程技术难吗?
  17. 搭建华为FusionCompute虚拟化平台(转载)
  18. R语言生存分析数据分析可视化案例
  19. 探讨位操作、算术右移、逻辑右移
  20. C---------------LessonCircle

热门文章

  1. 作为一名程序员如何在国内使用谷歌搜索技术(Google)?
  2. 企业竞争情报系统的业务模式深入分析
  3. 风雨萧关道【电视专题片解说词】
  4. 简单谈谈编程语言(二)
  5. 无线高清会议室终端之Miracast/HDCP
  6. mac电脑投屏到小米盒子_巧用手机自带功能向电脑传无损照片视频 华为小米苹果均支持 小米盒子 苹果手机 投屏软件...
  7. D轮融资7.5亿美元,十荟团能否比拼估值80亿美元的兴盛优选
  8. C语言发展史的点点滴滴
  9. 【数据应用案例】金融行业大数据用户画像实践
  10. MDK-ARM_V525新建工程 STM32使用软件仿真、RAM仿真调试及Flash下载配置详解