LeetCode 题解之C语言实现
文章平均质量分 59
懒是人的天性,定期计划刷题是一种反人性的行为,是对意志的考验。
当然通过刷题也是提高自己算法能力的一种方法。
学会技巧,不要为刷题而刷题!
机器灵魂注入师
一名在不断精进的嵌入式软件开发工程师,很庆幸能从事自己喜欢的工作。
愿你要永远抱有一颗好奇之心。
愿你出走半生,归来仍是少年。
展开
-
leetcode刷刷题 ---- 76. 最小覆盖子串(C语言版)
无论如何也不能成为平庸和老去的一代。– 微信公众号“MacTalk”题目来自于 leetcode 的[76. 最小覆盖子串](https://leetcode-cn.com/problems/final-value-of-variable-after-performing-operations/)。不愧是困难评级的,确实花了不少时间。先看看具体的题目内容:给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符.原创 2022-02-08 22:40:06 · 907 阅读 · 1 评论 -
原因分析:同样的测试用例, 在Leecode执行测试用例没错、本地执行没错,提交却出错
成功的反义词不是失败,而是平庸。在刷 leetcode 题目的时候,碰到一道题,测试用例是对的,本地使用自己的IDE也没问题,就是提交出了问题。折腾了好久,提交失败无数次,都怀疑人生了。在 leetcode 的讨论区搜到如下内容:这样就解释的通了:测试用例只有一个,而提交相当于测试很多个用例,这些用例共享所有的静态变量,某个变量使用到的静态变量可能被上一个测试用例修改过了,造成结果出了问题。最后把所有的静态变量干掉就提交成功了。所以在刷 leetcode 的要注意:不要使用静态变量(包括.原创 2022-02-08 18:23:05 · 2208 阅读 · 0 评论 -
leetcode刷刷题(54) ---- 69. x 的平方根(C语言版)
题目来自于 leetcode 的 69. x 的平方根。虽说是简单题,还是掉坑了,输在了没有考虑数据溢出的问题。遇到乘法还是要注意溢出,太容易出现了,检查的时候注意一下最大值最小值之类的临界条件。我的解法因为如果 x 值是整形中的最大值,其一半的相乘就会溢出。我这里用了不怎么光彩的方法规避,利用电脑求出最大值的平方根,然后将求解范围规避就好了。但是这样不仅仅是利用了外界计算这种不光彩的方式,还有一个潜在的问题,因为我假设了 int 是 32 位的数据类型,如果平台的 int 是别的字节大小的类型,原创 2021-06-19 10:39:07 · 243 阅读 · 0 评论 -
leetcode 刷题教程推荐
2020-10-17死亡是唯一一座永远亮着的灯塔,不管你向哪里航行,最终都得转向它指引的方向。一切都会逝去,只有死神永生。刘慈欣–《三体》最近有在刷leetcode的题目,以提高自己的算法能力、编程能力,这期间发现了一些不错的教程,推荐一下,下面都是一些资源链接。labuladong的算法小抄windliang的leetcode刷题笔记...原创 2020-10-17 15:29:58 · 637 阅读 · 0 评论 -
动态规划系列 之 股票相关问题 (C语言刷leetcode)
2020-10-15“知识的诅咒”:一旦我们知道某样东西,我们就会发现很难想象不知道它的时候会是什么样子。一、概述leetcode中的股票相关的题目如下:打开看很容易就知道是求最大收益,由于是求最值,很容易就想到要使用动态规划。其实动态规划就是使用了穷举,但是因为这类问题存在「重叠⼦问题」,可以使用DP table来优化穷举过程,记录过计算的结果,避免不必要的计算。动态规划三要素重叠⼦问题(如果暴力解决,存在大量运算,可以使用备忘录(DP table)来解决)最优⼦结构要符.原创 2020-10-15 23:50:18 · 1055 阅读 · 0 评论 -
leetcode刷刷题(53) ---- 有效的字母异位词(C语言版)
2020-7-28保守秘密的最好方式就是从来不知道这个秘密。– 维基解密创始人 朱利安.阿桑奇题目:leetcode – 242. 有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。来源:力扣(LeetCode)链原创 2020-07-28 23:41:20 · 469 阅读 · 0 评论 -
leetcode刷刷题(52) ---- 有效的括号(C语言版)
2020-6-11一生中总会遇到这样的时候,你的内心已经兵荒马乱天翻地覆了,可是在别人看来你只是比平时沉默了一点,没人会觉得奇怪。这种战争,注定单枪匹马。– 白岩松题目:leetcode – 20. 有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2原创 2020-06-13 23:35:20 · 800 阅读 · 0 评论 -
leetcode刷刷题(51) ---- 重新排列数组(C语言版)
2020-6-11从前书信很慢,车马很远,一生只够爱一个人。——木心 《从前慢》题目:leetcode – 1470. 重新排列数组给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排列,返回重排后的数组。 示例 1:输入:nums = [2,5,1,3,4,7], n = 3输出:[2,3,5,4,1,7] 解释:由于 x1=2,原创 2020-06-10 23:19:32 · 473 阅读 · 0 评论 -
leetcode刷刷题(50) ---- 统计位数为偶数的数字(C语言版)
2020-6-10"Those whom God wishes to destroy, he first makes mad."------ Euripides“神欲使之灭亡,必先使 之疯狂。”– 希腊悲剧作家 – 欧底庇德斯题目:leetcode – 1295. 统计位数为偶数的数字给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。示例 1:输入:nums = [12,345,2,6,7896]输出:2解释:12 是 2 位数字(位数为偶数) 34原创 2020-06-09 23:00:47 · 866 阅读 · 0 评论 -
leetcode刷刷题(49) ---- 整数的各位积和之差(C语言版)
2020-6-8道生一,一生二,二生三,三生万物老子 – 《道德经》题目:leetcode – 1281. 整数的各位积和之差给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 示例 1:输入:n = 234输出:15 解释:各位数之积 = 2 * 3 * 4 = 24 各位数之和 = 2 + 3 + 4 = 9 结果 = 24 - 9 = 15示例 2:输入:n = 4421输出:21解释: 各位数之积 = 4 * 4 *原创 2020-06-08 23:31:16 · 541 阅读 · 0 评论 -
leetcode刷刷题(48) ---- 将数字变成 0 的操作次数(C语言版)
2020-6-8天地不仁,以万物为刍狗。老子 --《道德经》题目:leetcode – 1342. 将数字变成 0 的操作次数给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。示例 1:输入:num = 14输出:6解释:步骤 1) 14 是偶数,除以 2 得到 7 。步骤 2) 7 是奇数,减 1 得到 6 。步骤 3) 6 是偶数,除以 2 得到 3 。步骤 4) 3 是奇数,减 1 得到原创 2020-06-07 22:21:15 · 347 阅读 · 0 评论 -
leetcode刷刷题(47) ---- 拥有最多糖果的孩子(C语言版)
2020-6-7If 10% of the profits,capital will ensure being used everywhere;20% of the profits,capital can active;50% of the profits,capital will rush into danger。for 100% of the profits,capital would dare to trample all human laws;there are more than 30原创 2020-06-07 10:26:50 · 509 阅读 · 0 评论 -
leetcode刷刷题(46) ---- 左旋转字符串(C语言版)
2020-6-6愿中国青年都摆脱冷气,只是向上走,不必听自暴自弃者流的话。能做事的做事,能发声的发声。有一分热,发一分光,就令萤火一般,也可以在黑暗里发一点光,不必等候炬火。此后如竟没有炬火:我便是唯一的光。倘若有了炬火,出了太阳,我们自然心悦诚服的消失。不但毫无不平,而且还要随喜赞美这炬火或太阳;因为他照了人类,连我都在内。– 鲁迅 《热风·随感录四十一》题目:leetcode – 面试题58 - II. 左旋转字符串字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾原创 2020-06-06 20:26:41 · 242 阅读 · 0 评论 -
leetcode刷刷题(45) ---- 无重复字符的最长子串(C语言版)
2020-6-5科技是枪,也是玫瑰。有时人们持枪远征,荒废了玫瑰园;有时人们沉迷园艺,家园却被铁蹄踏平。而在那些伟大的故事里,人们手握钢枪,身后鲜花盛开。题目:leetcode – 3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是原创 2020-06-06 17:34:07 · 1839 阅读 · 15 评论 -
leetcode刷刷题(44) ---- 除自身以外数组的乘积(C语言版)
2020-6-4I once heard that the evil spirits who lived in Rashomon fled for fear of the cruelty of human nature.我曾听说住罗生门的恶鬼,因害怕人性的残忍而逃走。 —芥川龙之介 《罗生门》题目:leetcode – 238. 除自身以外数组的乘积给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums原创 2020-06-04 23:47:29 · 285 阅读 · 0 评论 -
leetcode刷刷题(43) ---- 删除排序数组中的重复项(C语言版)
2020-6-2寻龙千万看缠山,一重缠是一重关,关门若有千重锁,定有王侯居此间。唐代风水大师-杨筠松 《撼龙经》题目:leetcode – 26. 删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的原创 2020-06-03 23:12:27 · 305 阅读 · 0 评论 -
leetcode刷刷题(42) ---- 整数反转(C语言版)
2020-5-6Don’t spend another minute being angry about yesterday.不要再浪费时间为昨天而懊恼。题目:leetcode 7. 整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2原创 2020-06-02 23:37:14 · 277 阅读 · 0 评论 -
leetcode刷刷题(41) ---- 移动零(C语言版)
2020-5-6When all the clouds darken up the skyway, there’s a rainbow highway to be found.当乌云密布,彩虹会为你铺就一条道路。题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0...原创 2020-05-06 23:32:40 · 621 阅读 · 0 评论 -
leetcode刷刷题(40) ---- 环形链表(C语言版)
2020-3-27It’s easy to find if you know what you are looking for.如果知道自己想追求什么,找到目标就容易了。题目:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:h...原创 2020-03-27 23:21:54 · 257 阅读 · 0 评论 -
leetcode刷刷题(39) ---- 删除链表的倒数第N个节点(C语言版)
2020-3-24Every boring hour in life is unique.在生命中,再无聊的时光也是限量版。题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的...原创 2020-03-24 23:43:35 · 297 阅读 · 0 评论 -
leetcode刷刷题(38) ---- 回文链表(C语言版)
2020-3-22There’s no escaping reason, no denying purpose.逃避没有理由,否认没有意义。题目:编写一个函数,检查输入的链表是否是回文的。示例 1:输入: 1->2输出: false 示例 2:输入: 1->2->2->1输出: true 来源:力扣(LeetCode)个人解答:(C版本)...原创 2020-03-22 17:25:22 · 335 阅读 · 0 评论 -
leetcode刷刷题(37) ---- 删除排序链表中的重复元素(C语言版)
2020-2-19Don’t get all sad-faced about what happened and scrunchy-faced about what could.不为已经发生的事而悲伤,也不为没发生的事而苦恼。题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2: 输入...原创 2020-02-18 21:58:13 · 718 阅读 · 0 评论 -
leetcode刷刷题(36) ---- 移除链表元素(C语言版)
2020-2-18No one can say what we get to be.没人能决定我们的未来。题目:删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5来源:力扣(LeetCode)链接:https://le...原创 2020-02-17 16:57:43 · 192 阅读 · 0 评论 -
leetcode刷刷题(35) ---- 移除重复节点(C语言版)
2020-2-17Listen to your inner voice.请聆听你内心的声音。题目:编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 2...原创 2020-02-15 22:38:28 · 298 阅读 · 0 评论 -
leetcode刷刷题(34) ---- 删除中间节点(C语言版)
2020-2-16Listen to your inner voice.请聆听你内心的声音。题目:实现一种算法,删除单向链表中间的某个节点(除了第一个和最后一个节点,不一定是中间节点),假定你只能访问该节点。示例:输入:单向链表a->b->c->d->e->f中的节点c结果:不返回任何数据,但该链表变为a->b->d->e->...原创 2020-02-15 17:52:47 · 374 阅读 · 0 评论 -
leetcode刷刷题(33) ---- 链表求和(C语言版)
2020-2-15Do not take anyone else’s word about what is right and wrong.不要人云亦云。题目:给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。示例:输入:(7 -> 1 -> 6) + (5 -> 9...原创 2020-02-14 21:51:36 · 561 阅读 · 0 评论 -
leetcode刷刷题(32) ---- 删除链表的节点(C语言版)
2020-2-14Whatever is worth doing is worth doing well. 任何值得做的,就把它做好。题目:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在...原创 2020-02-13 22:14:54 · 264 阅读 · 0 评论 -
leetcode刷刷题(31) ---- 链表中倒数第k个节点(C语言版)
2020-2-13To infinity and beyond!飞向浩瀚宇宙吧!题目:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4-...原创 2020-02-13 09:43:12 · 442 阅读 · 0 评论 -
leetcode刷刷题(30) ---- 合并两个有序链表(C语言版)
2020-2-12You gotta do what you’re meant to do.想做什么就去做。题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)...原创 2020-02-12 11:54:06 · 268 阅读 · 0 评论 -
leetcode刷刷题(29) ---- 链表的中间结点(C语言版)
2020-2-11Strength through unity. Unity through faith.力量来自团结,团结来自信仰。题目:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对...原创 2020-02-11 16:44:44 · 243 阅读 · 0 评论 -
leetcode刷刷题(28) ---- 反转链表(C语言版)
2020-2-10Don’t forget, a person’s greatest emotional need is to feel appreciated.莫忘记,人类情感上最大的需要是感恩。题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL...原创 2020-02-10 17:50:01 · 275 阅读 · 0 评论 -
leetcode刷刷题(27) ---- 二进制链表转整数(C语言版)
2020-2-2One has to be fair and very honest.要做一个正直的人。题目:给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例 1:输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)示例...原创 2020-02-02 12:30:12 · 311 阅读 · 5 评论 -
leetcode刷刷题(26) ---- 求众数(C语言版)
2019-11-25Above all, don’t lose hope.最重要的是,别放弃希望。题目:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2来...原创 2019-11-25 21:48:31 · 334 阅读 · 0 评论 -
leetcode刷刷题(25) ---- 下一个更大元素 I(C语言版)
2019-11-24What we think, we become.我们想的是什么,就会成为什么样的人。题目:给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如...原创 2019-11-24 11:11:59 · 375 阅读 · 0 评论 -
leetcode刷刷题(24) ---- 数组的相对排序(C语言版)
2019-11-23You reap what you sow.一分耕耘,一分收获。题目:给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1...原创 2019-11-23 16:35:04 · 612 阅读 · 0 评论 -
leetcode刷刷题(23) ---- “气球” 的最大数量(C语言版)
2019-11-22Luck is the name losers give to their own failings.运气是失败者给自己找的借口。题目:给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。示例 1:输入...原创 2019-11-22 19:17:45 · 432 阅读 · 0 评论 -
leetcode刷刷题(22) ---- 二进制数组中最大连续一个数(C语言版)
2019-11-21Don’t you blink, you might miss it.不要眨眼,机会稍纵即逝。题目:给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000...原创 2019-11-22 22:53:32 · 741 阅读 · 0 评论 -
leetcode刷刷题(21) ---- 二进制表示中质数个计算置位(C语言版)
2019-11-20Luck is the name losers give to their own failings.运气是失败者给自己找的借口。题目:给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。(注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。)示例 1:...原创 2019-11-19 20:14:53 · 194 阅读 · 0 评论 -
leetcode刷刷题(20) ---- 猜数字(C语言版)
2019-11-19Luck is the name losers give to their own failings.运气是失败者给自己找的借口。题目:小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次?输入的guess数组为 小A 每次的猜测,answer数组...原创 2019-11-19 18:44:54 · 206 阅读 · 0 评论 -
leetcode刷刷题(19) ---- 按奇偶排序数组(C语言版)
2019-11-18Cause morning rolls around and it’s another day of sun.清晨不久就会来到,又是阳光明媚的一天。题目:给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2...原创 2019-11-18 19:08:30 · 289 阅读 · 0 评论