刷题
文章平均质量分 78
刷LeetCode里面的经典题型总结
LeetCode经典题gitee仓库:
https://gitee.com/sleep-during-class/leetcodeshua-question
小李很执着
随性且自由,心安即是归处。
所涉及代码都收录在我的gitee仓库里https://gitee.com/sleep-during-class,具体代码在专栏里有对应仓库链接!!!
免费资源,免费专栏,一起学习!!!!
展开
-
【优选算法】滑动窗口——leetcode——串联所有单词的⼦串(hard)
标准库容器如std::vector和std::unordered_map、字符串操作、迭代器、范围循环、动态内存管理以及面向对象编程(OOP)。通过这些示例,展示了如何使用C++的这些特性来高效、安全地处理数据和管理内存,编写可维护的代码。理解和掌握这些概念是编写优质C++程序的基础。原创 2024-07-30 23:26:21 · 746 阅读 · 13 评论 -
牛客—CM11 链表分割
描述现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。原创 2023-11-12 16:44:05 · 86 阅读 · 5 评论 -
【优选算法】——滑动窗口——904. 水果成篮
你想要尽可能多地收集水果。你正在探访一家农场,农场从左到右种植了一排果树。如果从第一棵树开始采摘,则只能采摘 [0,1] 这两棵树。如果从第一棵树开始采摘,则只能采摘 [1,2] 这两棵树。水果不符合篮子的水果类型,那么就必须停止采摘。可以采摘 [1,2,1,1,2] 这五棵树。可以采摘 [2,3,2,2] 这四棵树。可以采摘 [1,2,2] 这三棵树。篮子,并且每个篮子只能装。树(包括开始采摘的树)上。返回你可以收集的水果的。2.⽤数组模拟哈希表。原创 2024-05-28 13:18:07 · 464 阅读 · 13 评论 -
【优选算法】——滑动窗口—1658. 将 x 减到 0 的最小操作数
数组「左端+右端」两段连续的、和为 x 的最短数组,信息量稍微多⼀些,不易理清思路;我们可以转化成求数组内⼀段连续的、和为 sum(nums) - x 的最⻓数组。此时,就是熟悉的「滑动窗⼝」问题了。原创 2024-05-23 17:51:42 · 900 阅读 · 4 评论 -
【优选算法】——滑动窗口——1004. 最大连续1的个数 III
粗体数字从 0 翻转到 1,最长的子数组长度为 10。粗体数字从 0 翻转到 1,最长的子数组长度为 6。原创 2024-05-16 23:32:01 · 342 阅读 · 3 评论 -
【优选算法】——滑动窗口——3. 无重复字符的最长子串
研究的对象依旧是⼀段连续的区间,因此继续使⽤「滑动窗⼝」思想来优化。让滑动窗⼝满⾜:窗⼝内所有元素都是不重复的。原创 2024-05-14 18:12:48 · 946 阅读 · 8 评论 -
[优选算法]------滑动窗⼝——209. 长度最小的子数组
相信科学(这也是很多题解以及帖⼦没告诉你的事情:只给你说怎么做,没给你解释为什么这么做):原创 2024-05-11 23:03:08 · 1280 阅读 · 20 评论 -
【优选算法】——双指针——15. 三数之和
不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。答案中不可以包含重复的三元组。唯一可能的三元组和不为 0。唯一可能的三元组和为 0。,判断是否存在三元组。原创 2024-05-09 15:20:31 · 489 阅读 · 36 评论 -
【优选算法】——Leetcode——LCR 179. 查找总价格为目标值的两个商品
购物车内的商品价格按照升序记录于数组price。请在购物车中找到两个商品的价格总和刚好是target。若存在多种情况,返回任一结果即可。[3,15] 或者 [15,3][27,34] 或者 [34,27]原创 2024-05-08 16:50:01 · 1351 阅读 · 24 评论 -
【优选算法】——Leetcode——611. 有效三角形的个数
给定一个包含非负整数的数组nums,返回其中可以组成三角形三条边的三元组个数。3有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,34。原创 2024-05-08 13:11:41 · 1014 阅读 · 1 评论 -
【优选算法】—Leetcode—11—— 盛最多水的容器
给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。你不能倾斜容器。49图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。1。原创 2024-05-07 23:54:34 · 510 阅读 · 11 评论 -
【优选算法】——Leetcode——202—— 快乐数
1.定义快慢指针2.慢指针每次向后移动一步快指针每次向后移动两步3.判断相遇时候的值即可。原创 2024-05-07 17:55:35 · 718 阅读 · 6 评论 -
[优选算法]——双指针——Leetcode——1089. 复写零
i. 当cur < n 的时候,⼀直执⾏下⾯循环:• 判断 cur 位置的元素:◦ 如果是 0 的话, dest 往后移动两位;◦ 否则, dest 往后移动⼀位。• 判断?dest?时候已经到结束位置,如果结束就终⽌循环;• 如果没有结束, cur++ ,继续判断。c. 判断dest 是否越界到 n 的位置:i.如果越界,执⾏下⾯三步:1. n - 1 位置的值修改成0;2. cur 向移动⼀步;3. dest 向前移动两步。原创 2024-05-05 17:35:29 · 1010 阅读 · 12 评论 -
【优选算法】——双指针——Leetcode——283.移动零
根据 cur 在扫描的过程中,遇到的不同情况,分类处理,实现数组的划分。?在?cur?遍历期间,使?[0, dest]?的元素全部都是⾮零元素, [dest + 1, cur - 1]?的元素全是零。原创 2024-05-05 12:07:11 · 575 阅读 · 7 评论 -
[LeetCode]—— 226——翻转二叉树
给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。原创 2024-04-22 18:21:53 · 566 阅读 · 4 评论 -
[LeetCode]——965——单值二叉树
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回true;否则返回false。原创 2024-04-22 07:58:00 · 272 阅读 · 0 评论 -
LeetCode——572—— 另一棵树的子树
- 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。给你两棵二叉树 root 和 subRoot。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true;否则,返回 false。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。原创 2024-04-18 20:34:30 · 510 阅读 · 1 评论 -
LeetCode——101——对称二叉树
与LeetCode———100——相同的树类似。原创 2024-04-18 17:51:10 · 251 阅读 · 1 评论 -
LeetCode———100——相同的树
然后,我们递归判断p的左子树和q的左子树的相同性,以及p的右子树和q的右子树的相同性。最后,我们判断p和q的值是否相等,如果不相等,则表示当前子树不相同,返回false。首先,我们判断两个节点p和q是否都为空,如果是,则表示当前子树相同,返回true。然后,我们判断p和q是否有一个为空,如果是,则表示当前子树不相同,返回false。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。最终,如果所有子树都相同,返回true,否则返回false。,编写一个函数来检验这两棵树是否相同。原创 2024-04-17 20:16:10 · 415 阅读 · 0 评论 -
LeetCode———144—— 二叉树的前序遍历
在这个示例中,`pi` 的初始值应该是0,表示数组 `a` 的起始位置。在遍历过程中,`pi` 的值会随着节点的遍历而递增,确保每个节点的值都被存储在数组的下一个位置。preorderTraversal函数调用TreeSize函数获取节点个数,创建结果数组a,调用preorder函数进行先序遍历,并返回遍历结果数组。需要注意的是,函数preorderTraversal返回的结果数组是动态分配的内存空间,需要在使用完毕后手动释放,以防止内存泄漏。遍历顺序:1 -> 2 -> 4 -> 5 -> 3。原创 2024-04-17 18:24:57 · 1082 阅读 · 0 评论 -
LeetCode——622设计循环队列
首先,通过malloc函数动态分配了一个MyCircularQueue结构体的内存空间,并将其地址赋给指针变量obj。然后,通过malloc函数再次动态分配了一个整型数组的内存空间,并将其地址赋给指针变量obj->a。这个数组的长度为k+1,多分配了一个空间用于判断队列是否满的条件。接着,将队列的头指针front和尾指针back都初始化为0。最后,将k的值赋给队列的长度k。最终,返回指向创建的循环队列的指针obj。原创 2024-04-11 07:07:53 · 1377 阅读 · 1 评论 -
链表面试题
目录💝1.876. 链表的中间结点❣️1.题目❣️2.解答:快慢指针法💝2.21. 合并两个有序链表❣️1.题目❣️2.解答 :双指针遍历两个链表💝3.OR36 链表的回文结构❣️1.题目❣️2.解答:快慢指针和链表反转💝4.138.随机链表的复制❣️2.解答。原创 2023-11-15 00:18:52 · 207 阅读 · 5 评论 -
链表相关部分OJ题
如果链表B的长度大于链表A,则将longList指向链表B,shortList指向链表A,否则将longList指向链表A,shortList指向链表B。输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,6,1,8,4,5]。这相当于不断将原链表的节点从头部插入到新链表中,从而实现了链表的反转。原创 2023-11-13 22:43:50 · 218 阅读 · 8 评论 -
Leetcode_203.移除链表元素—C语言
给你一个链表的头节点head和一个整数val,请你删除链表中所有满足的节点,并返回。[][][0, 104]算法思路:遍历链表,如果当前节点的值等于val,则删除该节点,并且修改前驱节点的next指针指向后继节点。如果当前节点的值不等于val,则将前驱节点指向当前节点,当前节点指向下一个节点。具体实现:使用两个指针prev和cur,分别指向前驱节点和当前节点。开始遍历前,先初始化prev为NULL,cur为head,即第一个节点。然后进行while循环,当cur指向NULL时停止。原创 2023-11-12 15:43:46 · 322 阅读 · 5 评论 -
Leetcode—合并两个有序数组—C语言
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n。原创 2023-11-08 12:12:25 · 113 阅读 · 10 评论 -
Leetcode—— 删除排序数组中的重复项——C语言
给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致。然后返回 nums 中唯一元素的个数。考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。返回 k。原创 2023-11-07 23:29:04 · 137 阅读 · 4 评论 -
LeetCode---消失的数字---C语言实现
数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?注意:本题相对书上原题稍作改动示例 1:输入:[3,0,1]输出:2示例 2:输入:[9,6,4,2,3,5,7,0,1]输出:8。原创 2023-11-01 20:15:52 · 74 阅读 · 1 评论 -
Leetcode----旋转数组 ------C语言篇
给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。原创 2023-11-01 20:25:28 · 124 阅读 · 4 评论