力扣算法题用c语言实现,刷题-力扣-25
刷题-力扣-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相关推荐
- 2021新年算法小专题—2.股票买卖利润刷题(Java)
本篇是股票买卖问题的更多题解,在上一篇文章中我们已经介绍了这一题型,实际上是一类dp问题,我们用自动机的思想去解决,在上一篇中我们以一道限定只买卖一次股票的题目为例进行了讲解,文章链接.下面我们继续完 ...
- 一个算法笨蛋的12月leetCode刷题日记
类似文章 一个算法笨蛋的2021年11月leetCode刷题日记 一个算法笨蛋的2021年12月leetCode刷题日记 一个算法笨蛋的2022年1月leetCode刷题日记 一个算法笨蛋的2022年 ...
- C语言百日刷题第七天
C语言百日刷题第七天 61. 写一个函数isPowerOfTwo判断是不是2的幂次方 62. 写一个函数isPowerOfThree判断是不是3的幂次方 63.n 的第 k 个因子 64.有效的完全平 ...
- C语言百日刷题第二天
C语言百日刷题第二天 11. 统计输入数据的正负个数 12.学生基本信息输入输出 13.杨辉三角的前n行 14.模拟用户登录情景 15.演示多个字符从两端移动,向中间汇聚 16.计算短信费用 17.编 ...
- C语言百日刷题第十三天
前言 今天是刷题第13天,放弃不难,但坚持一定很酷~ 临近期末,再刷一套模拟题 C语言百日刷题第十三天 前言 选择题 判断题 编程题 选择题 1.若由定义int*p1,*p2,m=5,n;以下赋值语句 ...
- 算法记录 牛客网 leetcode刷题记录
算法记录 & 牛客网 & leetcode刷题记录 解题思路 STL容器 常用算法模板 堆排序 插入排序 快速排序 BFS层序遍历 二叉树 JZ55 二叉树的深度 BST(binary ...
- C语言百日刷题第五天
C语言百日刷题第五天 41.实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定 42.实现一个函数来交换两个整数的内容. 43.实现一个函数来进行整型有序数组的二分查找 44.接收一个无符号整型 ...
- C语言百日刷题第十天
前言 今天是刷题第10天,放弃不难,但坚持一定很酷~ 快来跟我一起刷题吧. C语言百日刷题第十天 前言 81.连接两个字符串 82.输入一行字符,分别统计其中英文字母.空格.数字和其他字符的个数. 8 ...
- 刷了几千道算法题,我私藏的刷题网站都在这里了
作者 | Rocky0429 来源 | Python空间(ID: Devtogether) 遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活. ...
- 算法岗面试前怎样高效刷题?
如果不是为了面试 AI工程师刷题有用吗? 把时间都放在项目上不香嘛? 作为一个战五渣,我特地去观察和询问了身边很多精通此道的大神,他们对于"刷题"还是保持着认可的态度: 很清晰地理 ...
最新文章
- 【计算机视觉征稿】EI会议推荐|计算机多主题征稿,往届已被EI检索,ICCVDM 2021诚邀您投稿参会!...
- 为什么在Ruby中使用`rescue Exception =gt; e`样式不好?
- 网页标准HTML5标准较量正酣
- keras faster物体检测_【开源项目】特斯拉+树莓派实现车牌识别检测系统
- 被边缘化的“卓越亚马逊”
- 【PyQt5】QT designer + eclipse 集成开发
- server.transfer 无法跳转页面_H5 腾讯地图无法导航
- SpringBoot上传文件到本服务器 目录与jar包同级
- RBG-D深度相机的相关资料
- CSS字体、文本属性
- 无线通信设备安装工程概预算编制_电气设备安装工程计价与应用
- C#关于该进程无法访问文件,因为该文件正由另一进程使用的错误的一点心得(示例)
- 英语四六级必备资料(全网最全)
- CST软件基本操作 —2
- 微信小游戏关系链的使用(排行榜的显示)
- 零基础转行学编程技术难吗?
- 搭建华为FusionCompute虚拟化平台(转载)
- R语言生存分析数据分析可视化案例
- 探讨位操作、算术右移、逻辑右移
- C---------------LessonCircle
热门文章
- 作为一名程序员如何在国内使用谷歌搜索技术(Google)?
- 企业竞争情报系统的业务模式深入分析
- 风雨萧关道【电视专题片解说词】
- 简单谈谈编程语言(二)
- 无线高清会议室终端之Miracast/HDCP
- mac电脑投屏到小米盒子_巧用手机自带功能向电脑传无损照片视频 华为小米苹果均支持 小米盒子 苹果手机 投屏软件...
- D轮融资7.5亿美元,十荟团能否比拼估值80亿美元的兴盛优选
- C语言发展史的点点滴滴
- 【数据应用案例】金融行业大数据用户画像实践
- MDK-ARM_V525新建工程 STM32使用软件仿真、RAM仿真调试及Flash下载配置详解