LeetCode刷题
文章平均质量分 73
来知晓
时光如流水
一定要从中
捉几条鱼
展开
-
毕业搬砖后,依然躲不过考试,分享30道过华为机考的LeetCode高效刷题经验
非计算机科班出身,读研期间开始转行写代码,Leetcode刷题30道过华为机考笔试,入职后刷60道左右,通过华为软件开发最高等级认证:专业级。原创 2022-08-31 08:08:48 · 1610 阅读 · 0 评论 -
C刷题:LeetCode 297. 二叉树的序列化与反序列化 二叉树系列 | 困难
C刷题:LeetCode 297. 二叉树的序列化与反序列化 二叉树系列 | 困难题目描述思路分析代码实现参考资料[297. 二叉树的序列化与反序列化](https://leetcode-cn.com/problems/serialize-and-deserialize-binary-tree/)题目描述核心说明:请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示:原创 2021-10-19 20:44:47 · 198 阅读 · 0 评论 -
C刷题:LeetCode 1300. 转变数组后最接近目标值的数组和,二分查找法应用【中等】
目录文章目录题目描述思路分析代码实现参考资料作者:来知晓公众号:来知晓刷题交流QQ群:444172041题目描述核心说明:给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。请注意,答案不一定是 arr 中的数字。数据范围:1 <= a原创 2021-10-13 17:48:35 · 238 阅读 · 0 评论 -
C刷题:LeetCode 275. H 指数 II,二分查找法应用【中等】
C刷题:LeetCode 275. H 指数 II,二分查找法应用题目描述思路分析代码实现参考资料作者:来知晓公众号:来知晓刷题交流QQ群:444172041题目描述核心说明:给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数,citations 已经按照 升序排列 。计算并返回该研究者的 h 指数。h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (n 篇论文中)原创 2021-10-12 19:35:28 · 185 阅读 · 0 评论 -
C刷题:LeetCode 633. 平方数之和,二分查找法应用【中等】
C刷题:LeetCode 633. 二分查找应用之平方数之和,二分查找法应用题目描述思路分析代码实现参考资料题目描述核心说明:给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a^2 + b^2 = c 。题目链接:633. 平方数之和思路分析认真阅读,理解题意,整理如下:核心关系式:a^2 + b^2 = c为简化问题,a, b可直接认为非负,范围为: [0, sqrt©]特殊用例,按提示就是c的两个边界值0和2^15-1可得到两条思路,如下:思路1直原创 2021-10-09 19:46:15 · 133 阅读 · 0 评论 -
C刷题:LeetCode 373. 查找和最小的K对数字 || 华为面试题
C刷题:LeetCode 373. 查找和最小的K对数字 || 华为面试题核心思路代码实现引申问题参考资料LeetCode 373. 查找和最小的K对数字,题目描述,戳此处。核心思路感谢LeetCode题解中cnwsssss提供的实现思路,虽然ta用的是JavaScript代码。思路如下:不用优先队列/堆等复杂结构,就用双指针思路按升序排序后,做一个for循环遍历最次找最小的值,排列组合即可用一个数组来记录num1中每个元素在nums2中走了多远就可以,每次循环都是nums1和nums原创 2021-09-04 11:44:39 · 193 阅读 · 0 评论 -
C刷题:LeetCode 589. N 叉树的前序遍历,小白也能理解的递归代码实现详解
1. 充分理解题目的输入,题目已根据层序输入建好了多叉树2. 从节点结构体定义中,看出每个节点都有个二级指针children存储着下一层子节点的指针数组,numChildren记录下层子节点个数3. 本质与二叉树遍历相同,改造二叉树的遍历模板即可,将left/right子树遍历,换为for循环遍历children指针数组原创 2021-08-30 19:44:34 · 140 阅读 · 0 评论 -
C刷题:LeetCode常用算法框架及数据结构套路总结
本文把各分散的刷题博客总结,归纳整理成体系,汇总于此,刷题在精不在多,需能理解本质,做到举一反三,一通百通。欢迎盆友们讨论交流。原创 2021-08-17 19:38:10 · 550 阅读 · 0 评论 -
C刷题:LeetCode 875. 爱吃香蕉的珂珂 (中等)
本题的每堆香蕉数可排序,也可以不排序。虽然本题自己写一个查找最大值的函数仅需一个for循环,时间复杂度O(N),比快排的时间复杂度为O(NlogN)消耗要小。但还是建议先排序,排序的好处是直接能找出最值,不用自己写函数,另一个也可以简化思路。下面分析中默认已按升序排序。原创 2021-08-02 21:15:26 · 452 阅读 · 0 评论 -
C刷题:二分查找原始版、查找左侧边界/右侧边界模板大总结 | 二分法
二分法常用在数组和查找场景,可以用logN的时间复杂度,查找到某值或者上下区间,效率较高,使用频繁,但有经常容易出错,特总结用法供后面查阅回顾。对边界值和不等情况时的下标移动,务必要理解透彻,并多练习检验。原创 2021-07-26 21:09:11 · 1267 阅读 · 0 评论 -
C刷题:LeetCode 752. 打开转盘锁 (中等) || BFS广搜详解 (2)
C刷题:LeetCode 752. 打开转盘锁 (中等)Hash版本Hash版本优化展望Hash版本添加HASH数据结构,熟悉uthash的使用,添加约束条件。主要约束条件:不走回头路,比如往前转动了一次的结果,不允许再往后转动回去不能越过deadends加上终止条件,一旦匹配到target就返回不走回头路,比如往前转动了一次的结果,不允许再往后转动回去。如初始状态0000,转动一次变为1000,再转动一次不能转回去变为0000。实现的主要思路是,增加一个hash表visit记录所有已经原创 2021-07-13 09:29:26 · 216 阅读 · 0 评论 -
C刷题:LeetCode 752. 打开转盘锁 (中等) || BFS广搜详解 (1)
C刷题:LeetCode 752. 打开转盘锁 (中等)思路分析原始版本版本一:BFS穷举所有可能版本二:找到target即终止Hash版本Hash版本优化展望你以为的中等题,结果用了A*算法,没有现成的数据结构,用C语言实现,不亚于难题,哈哈连官方答案里都懒得写C版本了。。。所以,我就不搞那么复杂啦,就用BFS一步步把分析的思路记录与此吧。思路分析先实现最简单的,遍历穷举所有可能接着实现BFS遍历找到target再加约束deadends跳过 + 最小次数实现子函数加减功能原始版本独原创 2021-07-11 23:15:26 · 165 阅读 · 0 评论 -
LeetCode报错:AddressSanitizer:DEADLYSIGNAL详细分析与解决
LeetCode报错:AddressSanitizer:DEADLYSIGNAL详细分析与解决问题描述问题分析实例分析更多总结见:C刷题:LeetCode刷题踩坑常见BUG总结问题描述报错:AddressSanitizer:DEADLYSIGNAL,详细如下===42====ERROR:AddressSanitizer: SEGV on unknown address xx. The signal is caused by a READ memory access.问题分析一般可能主要有原创 2021-07-05 14:45:39 · 54102 阅读 · 2 评论 -
C刷题:LeetCode 46. 全排列 (中等) || 回溯算法/DFS深搜类
C刷题:LeetCode 46. 全排列 (中等)回溯法/DFS深搜C语言模板全排列思路代码实现参考资料本文涉及LeetCode类似题目:N 皇后 (困难)回溯法/DFS深搜C语言模板void backtrack(输入参数){ // baseCase终止条件 if (满足终止条件) { 将记录的结果存放到输出变量里; return; } // 递归调用 for (遍历当前层所有节点) { 处理节点,如把节点放入track数组 backtrack(节点信息,tr原创 2021-07-01 10:03:54 · 330 阅读 · 0 评论 -
C刷题:LeetCode 二叉树前序、中序、后序遍历,递归迭代,一次吃透
C刷题:LeetCode 二叉树前序、中序、后序遍历递归方法迭代方法中序前序后序参考资料本文涉及LeetCode相关题目:94 二叉树的中序遍历145 二叉树的后序遍历144 二叉树的前序遍历递归方法迭代方法中序前序后序参考资料...原创 2021-05-31 14:57:02 · 275 阅读 · 0 评论 -
C刷题:LeetCode 654. 最大二叉树 (中等)|| 二叉树系列
C刷题:LeetCode 654. 最大二叉树方法一方法二关键在于考察对二叉树递归思路的写法。方法一个人思路实现,时间复杂度与方法二相同,但缺点在于代码较为冗余,不够精炼。关键点如下:节点功能:每个节点的功能是找到最大值,赋值根节点遍历方式:前序遍历,划分区间,继续递归创建左右子树停止条件:左右索引越界切换条件:左下标大于右侧下标,left > right返回值:空注意:该思路先有根节点再有子节点,类似于从上往下,本质还没有发挥递归魅力/** * Definition fo原创 2021-05-29 10:27:12 · 207 阅读 · 0 评论 -
C刷题:LeetCode 239. 滑动窗口最大值 (困难)
aa实现0实现1实现2实现3实现4参考资料始于:2021年5月11日,开始琢磨2021年5月10日11:06:12实现0自己的思路:用缓存当前窗口三个最值的方法,来降低丢失的、进来的值最值的影响。问题在于:不能保证前三个最值,全部匹配当前窗口的前三个最值。当前三个最值挨着的时候,往后挪动三个,最值丢失,只能比较的是新进来的三个当最值,而不能把前面部分的数值再重新考虑进来;/** * Note: The returned array must be malloced, assume caller原创 2021-05-19 16:49:09 · 251 阅读 · 0 评论 -
C刷题:一个方法团灭LeetCode股票买卖问题
C刷题:一个方法团灭LeetCode股票买卖问题核心框架易错点LeetCode相关题目Git项目地址:LeetCodeUsingC刷题笔记本篇解法思路参考了labuladong的算法小抄里的文章《一个方法团灭 LeetCode 股票买卖问题》,将原来C++代码,根据C代码实现做了部分调整和简化。下面根据个人理解,总结下C代码实现时,一些核心要点和注意事项。核心框架关键点理解状态遍历的思路本质,类似于知道初始条件,不断迭代所有可能,最终得到结果记住状态转移方程写法和初始条件,并灵活应用买前必须原创 2021-05-08 19:47:31 · 305 阅读 · 0 评论 -
C刷题:找两个数之间位数为偶数的个数
C刷题:找两个数之间位数为偶数的个数题目描述样例分析C代码LeetCode相关题目Git项目地址:LeetCodeUsingC刷题笔记题目描述给定正整数N、M,均介于1~10^9之间,N<=M,找出两者之间(含N、M)的位数为偶数的数有多少个。样例输入:N = 1, M = 100输出:90样例说明:[1,100]区间上,有10~99元素的位数是2位,是偶数,这些整数的数量为90。输入:N = 1, M = 1000输出:91样例说明:在上个样例结果上,加上一个1000这原创 2021-05-06 10:52:00 · 1705 阅读 · 0 评论 -
剑指offer所有的题目总结及解题代码 C++实现
目录 基本都是参考别的博客和书本的代码,仅作为自己笔记用!!零、小结:一、位运算1、二进制中1的个数...转载 2019-09-09 13:50:47 · 1219 阅读 · 0 评论 -
华为2019年8月校招秋招笔试机考题解答C++实现
华为2020届校招秋招笔试机考题解答,C++实现,机考日期2019年7月31日。原创 2019-08-12 15:41:38 · 1768 阅读 · 0 评论 -
华为2019年3月软件开发工程师机考题解答 C++实现
华为2019年3月软件开发工程师机考题解答 C++实现,调试通过原创 2019-07-25 21:08:52 · 1667 阅读 · 0 评论 -
C刷题:LeetCode刷题踩坑常见bug总结【持续更新】
C刷题:LeetCode刷题踩坑常见bug总结常见坑点debug经验代码分析Git项目地址:LeetCodeUsingC刷题笔记本文主要记录刷题过程中,经常出现的一些bug错误,便于快速定位排查以及提高正确编码意识,欢迎大家参考并补充。更专业的内容可以查阅书籍《C缺陷和陷阱》。常见坑点数组下标越界,下标改变后用前务必保证在有效范围内,防止越界或为负代码理解错误,特别涉及到对参考的代码自己实现时,对原代码功能理解错误,需要仔细和扎实的基础使用双指针时,经常误用 left - right 作为长度原创 2021-04-25 20:48:47 · 2459 阅读 · 0 评论 -
C刷题:LeetCode 567.字符串的排列(中等) || 滑窗技巧
C刷题:LeetCode 567.字符串的排列(中等) || 滑窗技巧实现代码Git项目地址:LeetCodeUsingC刷题笔记本篇解法参考了labuladong的C++滑窗模板,并根据C代码实现做了部分调整,相关改变见注释。实现代码// "ky"// "ainwkckifykxlribaypk"// output: true#define MAX_LEN 128bool checkInclusion(char *t, char *s)// int checkInclusion(cha原创 2021-04-24 11:26:49 · 182 阅读 · 0 评论 -
C刷题:LeetCode 438.找到字符串中所有字母异位词(中等) || 滑窗技巧
C刷题:LeetCode 438.找到字符串中所有字母异位词(中等) || 滑窗技巧实现代码Git项目地址:LeetCodeUsingC刷题笔记本篇解法参考了labuladong的C++滑窗模板,并根据C代码实现做了部分调整,相关改变见注释。实现代码/** * Note: The returned array must be malloced, assume caller calls free(). */#define MAX_LEN 128 // 可改为26个小写字母#define MAX原创 2021-04-24 11:09:51 · 202 阅读 · 0 评论 -
C刷题:LeetCode 3.无重复字符的最长子串(中等) || 滑窗技巧
C刷题:LeetCode 3.无重复字符的最长子串(中等) || 滑窗技巧实现代码Git项目地址:LeetCodeUsingC刷题笔记本篇解法参考了labuladong的C++滑窗模板,并根据C代码实现做了部分调整,相关改变见注释。实现代码/** * Note: The returned array must be malloced, assume caller calls free(). */// 可改为26,表示26个小写字母,但在相应地方要做 - 'a' 操作#define MAX_L原创 2021-04-24 11:07:06 · 195 阅读 · 0 评论 -
C刷题:LeetCode 76.最小覆盖子串(困难) || 滑窗技巧【系列1】
C刷题:LeetCode 76.最小覆盖子串(困难) || 滑窗技巧实现代码题目链接:LeetCode 76.最小覆盖子串(困难)Git项目地址:LeetCodeUsingC刷题笔记原题链接,本篇解法参考了labuladong的C++滑窗模板,并根据C代码实现做了部分调整,相关改变见注释。实现代码#define MAX_LEN 128char* minWindow(char * s, char * t){ int hashNeed[MAX_LEN] = {0}; int has原创 2021-04-24 10:59:41 · 511 阅读 · 2 评论 -
C刷题:LeetCode 165.比较版本号
C刷题:LeetCode 165.比较版本号知识点题目分析主要思路代码开销实现代码题目链接:LeetCode 165.比较版本号Git项目地址:LeetCodeUsingC刷题笔记可能因为C语言过于底层,许多方便数据结构和库函数都没有,发现网上用C代码刷LeetCode的项目并不多。为真正锻炼代码能力,我们还是从底层轮子熟悉起吧,自己造一下试试,以后才能高屋建瓴,后面用其他语言实现时,调用才会更得心应手。这系列博客不会每道刷的LeetCode题都拿出来分析,仅针对卡壳较久、有些debug技巧的题目,原创 2021-04-17 22:17:59 · 287 阅读 · 0 评论