![](https://img-blog.csdnimg.cn/direct/e057fc1d1944428698d19263fa7a7f47.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode题目集锦
文章平均质量分 72
总结做题时的解题思路
夜夜亮晶晶
一窍不通
展开
-
Date类 —— 题目集锦
有关Date类的OJ题目原创 2024-04-09 10:55:12 · 394 阅读 · 0 评论 -
位运算算法(2)
【代码】位运算算法(2)原创 2024-03-29 20:53:01 · 295 阅读 · 0 评论 -
位运算算法(1)
声明:本博客涉及到的三道题均为一种做法的总结,建议先了解做法,然后强化代码能力。原创 2024-03-29 20:53:00 · 484 阅读 · 0 评论 -
前缀和算法(1)
【代码】前缀和算法(1)原创 2024-03-27 21:01:54 · 240 阅读 · 0 评论 -
二分查找算法(2)
即下标 i 前的所有元素都升序、后的所有元素都降序, i 是最大值。原创 2024-03-20 17:31:24 · 175 阅读 · 0 评论 -
滑动窗口算法(2)
即在数组中找一段最长的连续子数组,该子数组的数字种类不超过2。原创 2024-03-18 13:42:38 · 433 阅读 · 0 评论 -
滑动窗口算法(1)
滑动窗口其实就是两个同向的指针,不停地有数据进入这两个指针的区间,也不停地有数据要退出这个区间,这个区间在整个数组中来回滑动,故名[滑动窗口]。这样一看,我们的题目就变成了在数组中找到和为 sum - x 的最长连续子数组!若问题分析的对象是[一段连续的区间],我们就可以考虑使用[滑动窗口]解决问题。即找有最长1的区间,该区间0的个数不超过k个。原创 2024-03-14 09:08:18 · 347 阅读 · 0 评论 -
双指针算法(2)
本文为双指针算法的最后一文,用四个题具体地讲解了可以使用双指针的题型原创 2024-03-06 22:49:46 · 434 阅读 · 0 评论 -
【中位数问题】两个已升序数组确定其中位
二分查找主要运用的特性就是如果两数组的第k/2个元素都相等,那很明显你们的第k/2个元素都是我的第k小元,但是如果两者不等,那肯定较小的那个和它前面比它小的元素都在我的前k个元素中,我直接把你删去然后让k缩小相同的值,现有两个已升序排列的数组𝐴和𝐵,其规模分别为𝑚和𝑛,试设计一个渐近时间复杂度为𝑂(log(𝑚 + 𝑛))的算法去确定𝐴和𝐵的所有元素的中位数。其实这三步就是我们递归的思路,当我们的k逐级减少到1时,就会到达递归出口。原创 2023-12-25 10:59:52 · 384 阅读 · 0 评论 -
双指针算法(1)
这是将数组分成两部分的题目,当我们遇到把数组分成若干部分的题目时,首先要想到的是双指针,在之前的学习中,我对对撞指针的题目做的比较多,但是这题如果我们使用对撞指针就无法满足“保持非零元素的相对顺序”这一条件,所以我们就考虑到了快慢指针。根据以上情况,我们设置左右指针,并不断选中最小值然后计算其容积,并让非最小值向内移动,不断重复,并不断更新容积的最大值即可。但是我们要注意,因为 dest 指向已处理部分的最后一个元素,所以 dest 是非零的,交换时使用的是 dest++原创 2024-03-06 17:17:13 · 822 阅读 · 0 评论 -
双指针类型题目
双向指针在需要并时使用较广泛。原创 2023-08-06 22:50:41 · 48 阅读 · 0 评论 -
二叉树OJ题目——C语言
给定一个二叉树root,返回其最大深度。二叉树的是指从根节点到最远叶子节点的最长路径上的节点数。32[0, 104]原创 2023-12-02 21:01:28 · 1009 阅读 · 0 评论 -
栈和队列OJ题目——C语言
在去栈首的时候,我们取到的是队列的最后一个元素,首先想到的肯定是返回我们导完数据后剩的那个元素,直接CV上面的代码,但是我们要能想到在写队列时,我们写过取队尾函数QueueBack,我们可以直接进行判空操作,返回不为空队列的最后一个元素。在删除时,我们也可以使用QueueSize对队列数据的个数进行判断,用QueueFront进行导入队头操作,此时该队列承担的是导数据的任务, 同时导入队头的同时不要忘记要将队头Pop出去。这就是我们的数量不匹配,我们可以在最后进行一个判空,如果最后栈没空,说明数量不匹配。原创 2023-11-25 13:22:41 · 1175 阅读 · 0 评论 -
单链表OJ题目——C语言
我们在做这题之前要了解什么是哨兵位,因为这题如果不设置哨兵位会多很多麻烦。在我们之前做的题中我们不难发现,当要传入第一个结点时,我们都要判断头结点是否为空,以此来确定是给头结点赋值还是给头结点的next赋值,这就是不带哨兵位的链表,哨兵位其实就是我们动态开辟了一块空间给头结点,这样头结点永远都不会为空。既然头结点永远不会为空,那我们在传值的时候完全可以不用考虑,直接传给phead->next,需要注意的是,在需要返回值时,我们不可以单一的返回phead,而是返回phead->next,另外。原创 2023-11-14 11:17:38 · 110 阅读 · 0 评论 -
C语言中#define后的算术运算
依旧保留了M+1外的括号,但后面 * M / 2 ,并不会变成 *(N + 1)/ 2.但真的是如此吗,这题给小学生做可能很简单,但是给像我这样的大学生做我只能说上难度了。// 我们就可以得出 M=3 , NUM = 4*3/2 = 12/2 = 6.// 这里 N=2 ,M=N+1 , NUM=(M + 1) * M / 2。// 不太了解 define 的其实也可以知道,,这里M被换成了N+1,原创 2023-08-08 23:18:20 · 472 阅读 · 1 评论 -
写一个函数返回参数二进制中1的个数(包含原码反码补码的理解、移位操作符的使用、按位与、按位或、按位异或)
通过讲解写一个函数返回参数二进制中 1 的个数的三种解法介绍了原码反码补码,以及移位操作符的使用,按位与、按位或、按位异或的使用原创 2023-07-29 12:39:14 · 86 阅读 · 10 评论