This commit is contained in:
programmercarl
2023-07-14 11:13:00 +08:00
parent 886287eb27
commit ba5ecfecaf
12 changed files with 64 additions and 41 deletions

View File

@ -26,9 +26,12 @@
**你不需要考虑数组中超出新长度后面的元素。**
## 思路
针对本题,我录制了视频讲解:[数组中移除元素并不容易LeetCode27. 移除元素](https://www.bilibili.com/video/BV12A4y1Z7LP),结合本题解一起看,事半功倍!
## 算法公开课
**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html)[数组中移除元素并不容易LeetCode27. 移除元素](https://www.bilibili.com/video/BV12A4y1Z7LP),相信结合视频再看本篇题解,更有助于大家对本题的理解**。
## 思路
有的同学可能说了,多余的元素,删掉不就得了。

View File

@ -6,7 +6,7 @@
## 59.螺旋矩阵II
# 59.螺旋矩阵II
[力扣题目链接](https://leetcode.cn/problems/spiral-matrix-ii/)
@ -22,9 +22,12 @@
[ 7, 6, 5 ]
]
## 思路
为了利于录友们理解,我特意录制了视频,[拿下螺旋矩阵LeetCode59.螺旋矩阵II](https://www.bilibili.com/video/BV1SL4y1N7mV),结合视频一起看,事半功倍!
## 算法公开课
**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html)[拿下螺旋矩阵LeetCode59.螺旋矩阵II](https://www.bilibili.com/video/BV1SL4y1N7mV),相信结合视频再看本篇题解,更有助于大家对本题的理解**。
## 思路
这道题目可以说在面试中出现频率较高的题目,**本题并不涉及到什么算法,就是模拟过程,但却十分考察对代码的掌控能力。**

View File

@ -27,6 +27,10 @@
输入head = [7,7,7,7], val = 7
输出:[]
# 算法公开课
**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html)[链表基础操作| LeetCode203.移除链表元素](https://www.bilibili.com/video/BV18B4y1s7R9),相信结合视频再看本篇题解,更有助于大家对本题的理解**。
# 思路

View File

@ -17,6 +17,11 @@
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
# 算法公开课
**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html)[帮你拿下反转链表 | LeetCode206.反转链表](https://www.bilibili.com/video/BV1nB4y1i7eL),相信结合视频再看本篇题解,更有助于大家对本题的理解**。
# 思路
本题我录制了B站视频[帮你拿下反转链表 | LeetCode206.反转链表](https://www.bilibili.com/video/BV1nB4y1i7eL),相信结合视频在看本篇题解,更有助于大家对链表的理解。

View File

@ -13,9 +13,9 @@
示例:
输入s = 7, nums = [2,3,1,2,4,3]
输出2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。
* 输入s = 7, nums = [2,3,1,2,4,3]
* 输出2
* 解释:子数组 [4,3] 是该条件下的长度最小的子数组。
提示:
@ -23,9 +23,12 @@
* 1 <= nums.length <= 10^5
* 1 <= nums[i] <= 10^5
# 思路
# 算法公开课
为了易于大家理解我特意录制了B站视频[拿下滑动窗口! | LeetCode 209 长度最小的子数组](https://www.bilibili.com/video/BV1tZ4y1q7XE),结合视频看本题解,事半功倍!
**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html)[拿下滑动窗口! | LeetCode 209 长度最小的子数组](https://www.bilibili.com/video/BV1tZ4y1q7XE)相信结合视频看本题解,更有助于大家对本题的理解**。
# 思路
## 暴力解法

View File

@ -16,18 +16,18 @@
给定一个非空的字符串判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母并且长度不超过10000。
示例 1:
输入: "abab"
输出: True
解释: 可由子字符串 "ab" 重复两次构成。
* 输入: "abab"
* 输出: True
* 解释: 可由子字符串 "ab" 重复两次构成。
示例 2:
输入: "aba"
输出: False
* 输入: "aba"
* 输出: False
示例 3:
输入: "abcabcabcabc"
输出: True
解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)
* 输入: "abcabcabcabc"
* 输出: True
* 解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)
# 思路

View File

@ -4,11 +4,8 @@
</a>
<p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
# 684.冗余连接
[力扣题目链接](https://leetcode.cn/problems/redundant-connection/)
树可以看成是一个连通且 无环 的 无向 图。
@ -78,7 +75,9 @@ void join(int u, int v) {
2. 将两个节点接入到同一个集合函数join(int u, int v)将两个节点连在同一个根节点上
3. 判断两个节点是否在同一个集合函数isSame(int u, int v)就是判断两个节点是不是同一个根节点
简单介绍并查集之后我们再来看一下这道题目
如果还不了解并查集可以看这里[并查集理论基础](https://programmercarl.com/图论并查集理论基础.html)
我们再来看一下这道题目
题目说是无向图返回一条可以删去的边使得结果图是一个有着N个节点的树只有一个根节点)。
@ -92,7 +91,6 @@ void join(int u, int v) {
节点A 和节点 B 不在同一个集合那么就可以将两个 节点连在一起
如果题目中说如果有多个答案则返回二维数组中最前出现的边 那我们就要 从后向前遍历每一条边了
如果边的两个节点已经出现在同一个集合里说明着边的两个节点已经连在一起了再加入这条边一定就出现环了
@ -151,8 +149,6 @@ public:
可以看出主函数的代码很少就判断一下边的两个节点在不在同一个集合就可以了
这里对并查集就不展开过多的讲解了翻到了自己十年前写过了一篇并查集的文章[并查集学习](https://blog.csdn.net/youngyangyang04/article/details/6447435)哈哈那时候还太年轻写不咋地有空我会重写并查集基础篇
# 其他语言版本

View File

@ -104,7 +104,7 @@ if (vec.size() > 0) {
}
```
在来看情况三明确没有入度为2的情况那么一定有向环,找到构成环的边就是要删除的边。
在来看情况三明确没有入度为2的情况那么一定有向环找到构成环的边就是要删除的边。
可以定义一个函数,代码如下:
@ -122,7 +122,7 @@ vector<int> getRemoveEdge(const vector<vector<int>>& edges)
**因为如果两个点所在的边在添加图之前如果就可以在并查集里找到了相同的根,那么这条边添加上之后 这个图一定不是树了**
这里对并查集就不展开过多的讲解了,翻到了自己十年前写过了一篇并查集的文章[并查集学习](https://blog.csdn.net/youngyangyang04/article/details/6447435),哈哈,那时候还太年轻,写不咋地,有空我会重写一篇!
如果还不了解并查集,可以看这里:[并查集理论基础](https://programmercarl.com/图论并查集理论基础.html)
本题C++代码如下:(详细注释了)

View File

@ -33,11 +33,13 @@
* n 将在 [1, 10000]之间。
* nums 的每个元素都将在 [-9999, 9999]之间。
## 算法公开课
***[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html)[手把手带你撕出正确的二分法](https://www.bilibili.com/video/BV1fA4y1o715),相信结合视频再看本篇题解,更有助于大家对本题的理解**。
## 思路
为了易于大家理解,我还录制了视频,可以看这里:[B站手把手带你撕出正确的二分法](https://www.bilibili.com/video/BV1fA4y1o715)
**这道题目的前提是数组为有序数组**,同时题目还强调**数组中无重复元素**,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件,当大家看到题目描述满足如上条件的时候,可要想一想是不是可以用二分法了。
二分查找涉及的很多的边界条件,逻辑比较简单,但就是写不好。例如到底是 `while(left < right)` 还是 `while(left <= right)`,到底是`right = middle`呢,还是要`right = middle - 1`呢?

View File

@ -24,9 +24,13 @@
![707示例](https://code-thinking-1253855093.file.myqcloud.com/pics/20200814200558953.png)
# 思路
为了方便大家理解,我特意录制了视频:[帮你把链表操作学个通透LeetCode707.设计链表](https://www.bilibili.com/video/BV1FU4y1X7WD),结合视频在看本题解,事半功倍。
# 算法公开课
**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html)[帮你把链表操作学个通透LeetCode707.设计链表](https://www.bilibili.com/video/BV1FU4y1X7WD),相信结合视频再看本篇题解,更有助于大家对本题的理解**。
# 思路
如果对链表的基础知识还不太懂,可以看这篇文章:[关于链表,你该了解这些!](https://programmercarl.com/链表理论基础.html)

View File

@ -13,18 +13,21 @@
给你一个按 非递减顺序 排序的整数数组 nums返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
示例 1
输入nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]
* 输入nums = [-4,-1,0,3,10]
* 输出:[0,1,9,16,100]
* 解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]
示例 2
输入nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]
* 输入nums = [-7,-3,2,3,11]
* 输出:[4,9,9,49,121]
# 算法公开课
**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html)[双指针法经典题目!LeetCode:977.有序数组的平方](https://www.bilibili.com/video/BV1QB4y1D7ep),相信结合视频再看本篇题解,更有助于大家对本题的理解**。
# 思路
针对本题,我录制了视频讲解:[双指针法经典题目!LeetCode:977.有序数组的平方](https://www.bilibili.com/video/BV1QB4y1D7ep),结合本题解一起看,事半功倍!
## 暴力排序
最直观的想法,莫过于:每个数平方之后,排个序,美滋滋,代码如下:

View File

@ -31,9 +31,9 @@
## 思路
本题是并查集基础题目。
本题是并查集基础题目。 如果还不了解并查集,可以看这里:[并查集理论基础](https://programmercarl.com/图论并查集理论基础.html)
首先要知道并查集可以解决什么问题呢?
并查集可以解决什么问题呢?
主要就是集合问题,两个节点在不在一个集合,也可以将两个节点添加到一个集合中。
@ -70,7 +70,7 @@ void join(int u, int v) {
}
```
以上模板中,只要修改 n 大小就可以,本n不会超过2 * 10^5。
以上模板中,只要修改 n 大小就可以,本n不会超过2 * 10^5。
并查集主要有三个功能。