Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
youngyangyang04 committed Aug 3, 2023
2 parents 1a2c911 + 197d6c5 commit f08eaaa
Show file tree
Hide file tree
Showing 204 changed files with 3,200 additions and 2,062 deletions.
27 changes: 8 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
> 1. **介绍** :本项目是一套完整的刷题计划,旨在帮助大家少走弯路,循序渐进学算法,[关注作者](#关于作者)
> 2. **正式出版**[《代码随想录》](https://programmercarl.com/other/publish.html)
> 3. **PDF版本**[「代码随想录」算法精讲 PDF 版本](https://programmercarl.com/other/algo_pdf.html)
> 4. **算法公开课**[《代码随想录》算法视频公开课](https://www.bilibili.com/video/BV1fA4y1o715)
> 4. **算法公开课**[《代码随想录》算法视频公开课](https://www.programmercarl.com/other/gongkaike.html)
> 5. **最强八股文**[代码随想录知识星球精华PDF](https://www.programmercarl.com/other/kstar_baguwen.html)
> 6. **刷题顺序** :README已经将刷题顺序排好了,按照顺序一道一道刷就可以。
> 7. **学习社区** :一起学习打卡/面试技巧/如何选择offer/大厂内推/职场规则/简历修改/技术分享/程序人生。欢迎加入[「代码随想录」知识星球](https://programmercarl.com/other/kstar.html)
> 8. **提交代码** :本项目统一使用C++语言进行讲解,但已经有Java、Python、Go、JavaScript等等多语言版本,感谢[这里的每一位贡献者](https://github.com/youngyangyang04/leetcode-master/graphs/contributors),如果你也想贡献代码点亮你的头像,[点击这里](https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A)了解提交代码的方式。
> 8. **提交代码** :本项目统一使用C++语言进行讲解,但已经有Java、Python、Go、JavaScript等等多语言版本,感谢[这里的每一位贡献者](https://github.com/youngyangyang04/leetcode-master/graphs/contributors),如果你也想贡献代码点亮你的头像,[点击这里](https://www.programmercarl.com/qita/join.html)了解提交代码的方式。
> 9. **转载须知** :以下所有文章皆为我([程序员Carl](https://github.com/youngyangyang04))的原创。引用本项目文章请注明出处,发现恶意抄袭或搬运,会动用法律武器维护自己的权益。让我们一起维护一个良好的技术创作环境!

Expand Down Expand Up @@ -51,19 +51,12 @@

## 如何使用该刷题攻略

电脑端还看不到留言,大家可以在公众号[「代码随想录」](https://img-blog.csdnimg.cn/20201124161234338.png),左下角有「刷题攻略」,这是手机版刷题攻略,看完就会发现有很多录友(代码随想录的朋友们)在文章下留言打卡,这份刷题顺序和题解已经陪伴了上万录友了,同时也说明文章的质量是经过上万人的考验!

欢迎每一位学习算法的小伙伴加入到这个学习阵营来!

**目前已经更新了,数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心,八个专题了,正在讲解动态规划!**
按照先面的排列顺序,从数组开始刷起就可以了,顺序都安排好了,按顺序刷就好。

在刷题攻略中,每个专题开始都有理论基础篇,并不像是教科书般的理论介绍,而是从实战中归纳需要的基础知识。每个专题结束都有总结篇,最这个专题的归纳总结。

如果你是算法老手,这篇攻略也是复习的最佳资料,如果把每个系列对应的总结篇,快速过一遍,整个算法知识体系以及各种解法就重现脑海了。


目前「代码随想录」刷题攻略更新了:**200多篇文章,精讲了200道经典算法题目,共60w字的详细图解,大部分题目都搭配了20分钟左右的视频讲解**,视频质量很好,口碑很好,大家可以去看看,视频列表:[代码随想录视频讲解](https://www.bilibili.com/video/BV1fA4y1o715)

**这里每一篇题解,都是精品,值得仔细琢磨**

我在题目讲解中统一使用C++,但你会发现下面几乎每篇题解都配有其他语言版本,Java、Python、Go、JavaScript等等,正是这些[热心小伙们](https://github.com/youngyangyang04/leetcode-master/graphs/contributors)贡献的代码,当然我也会严格把控代码质量。
Expand Down Expand Up @@ -100,14 +93,11 @@
* [程序员应该用什么用具来写文档?](./problems/前序/程序员写文档工具.md)

* 求职
* [ACM模式练习网站,卡码网](https://kamacoder.com/)
* [程序员的简历应该这么写!!(附简历模板)](./problems/前序/程序员简历.md)
* [【专业技能】应该这样写!](https://programmercarl.com/other/jianlizhuanye.html)
* [【项目经历】应该这样写!](https://programmercarl.com/other/jianlixiangmu.html)
* [BAT级别技术面试流程和注意事项都在这里了](./problems/前序/BAT级别技术面试流程和注意事项都在这里了.md)
* [北京有这些互联网公司,你都知道么?](./problems/前序/北京互联网公司总结.md)
* [上海有这些互联网公司,你都知道么?](./problems/前序/上海互联网公司总结.md)
* [深圳有这些互联网公司,你都知道么?](./problems/前序/深圳互联网公司总结.md)
* [广州有这些互联网公司,你都知道么?](./problems/前序/广州互联网公司总结.md)
* [成都有这些互联网公司,你都知道么?](./problems/前序/成都互联网公司总结.md)
* [杭州有这些互联网公司,你都知道么?](./problems/前序/杭州互联网公司总结.md)

* 算法性能分析
* [关于时间复杂度,你不知道的都在这里!](./problems/前序/关于时间复杂度,你不知道的都在这里!.md)
Expand Down Expand Up @@ -396,7 +386,7 @@

* [图论:深度优先搜索理论基础](./problems/图论深搜理论基础.md)
* [图论:797.所有可能的路径](./problems/0797.所有可能的路径.md)
* [图论:广度优先搜索理论基础](./problems/图论广索理论基础.md)
* [图论:广度优先搜索理论基础](./problems/图论广搜理论基础.md)
* [图论:200.岛屿数量.深搜版](./problems/0200.岛屿数量.深搜版.md)
* [图论:200.岛屿数量.广搜版](./problems/0200.岛屿数量.广搜版.md)
* [图论:695.岛屿的最大面积](./problems/0695.岛屿的最大面积.md)
Expand Down Expand Up @@ -506,7 +496,7 @@

# 关于作者

大家好,我是程序员Carl,哈工大师兄,《代码随想录》作者,先后在腾讯和百度从事后端技术研发,CSDN博客专家。对算法和C++后端技术有一定的见解,利用工作之余重新刷leetcode。
大家好,我是程序员Carl,哈工大师兄,《代码随想录》作者,先后在腾讯和百度从事后端技术研发。对算法和C++后端技术有一定的见解,利用工作之余重新刷leetcode。

加入「代码随想录」刷题小分队(微信群),可以扫下方二维码,加代码随想录客服微信。

Expand All @@ -527,4 +517,3 @@
<div align="center"><img src="https://code-thinking-1253855093.file.myqcloud.com/pics/20211026122841.png" data-img="1" width="650" height="500"></img></div>


<!-- 24. [贪心算法:714.买卖股票的最佳时机含手续费](./problems/0714.买卖股票的最佳时机含手续费.md) -->
44 changes: 25 additions & 19 deletions problems/0001.两数之和.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>


## 1. 两数之和
# 1. 两数之和

[力扣题目链接](https://leetcode.cn/problems/two-sum/)

Expand All @@ -21,10 +21,12 @@

所以返回 [0, 1]

## 算法公开课

**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html)[梦开始的地方,Leetcode:1.两数之和](https://www.bilibili.com/video/BV1aT41177mK),相信结合视频再看本篇题解,更有助于大家对本题的理解**

## 思路

建议看一下我录的这期视频:[梦开始的地方,Leetcode:1.两数之和](https://www.bilibili.com/video/BV1aT41177mK),结合本题解来学习,事半功倍。
## 思路

很明显暴力的解法是两层for循环查找,时间复杂度是O(n^2)。

Expand Down Expand Up @@ -128,8 +130,8 @@ public:
## 其他语言版本
### Java:
Java:
```java
public int[] twoSum(int[] nums, int target) {
int[] res = new int[2];
Expand All @@ -150,8 +152,9 @@ public int[] twoSum(int[] nums, int target) {
}
```

Python:
### Python:
(版本一) 使用字典

```python
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
Expand All @@ -160,7 +163,7 @@ class Solution:
for index, value in enumerate(nums):
if target - value in records: # 遍历当前元素,并在map中寻找是否有匹配的key
return [records[target- value], index]
records[value] = index # 遍历当前元素,并在map中寻找是否有匹配的key
records[value] = index # 如果没找到匹配对,就把访问过的元素和下标加入到map中
return []
```
(版本二)使用集合
Expand Down Expand Up @@ -211,7 +214,7 @@ class Solution:
return [i,j]
```

Go:
### Go:

```go
// 暴力解法
Expand Down Expand Up @@ -242,7 +245,7 @@ func twoSum(nums []int, target int) []int {
}
```

Rust
### Rust:

```rust
use std::collections::HashMap;
Expand All @@ -263,9 +266,7 @@ impl Solution {
}
}
```
Rust

```
```rust
use std::collections::HashMap;

impl Solution {
Expand All @@ -284,7 +285,7 @@ impl Solution {
}
```

Javascript
### Javascript:

```javascript
var twoSum = function (nums, target) {
Expand All @@ -299,7 +300,7 @@ var twoSum = function (nums, target) {
};
```

TypeScript:
### TypeScript:

```typescript
function twoSum(nums: number[], target: number): number[] {
Expand All @@ -317,7 +318,7 @@ function twoSum(nums: number[], target: number): number[] {
};
```

php
### PhP:

```php
function twoSum(array $nums, int $target): array
Expand All @@ -337,7 +338,8 @@ function twoSum(array $nums, int $target): array
}
```

Swift:
### Swift:

```swift
func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
// 值: 下标
Expand All @@ -353,8 +355,8 @@ func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
}
```

### Scala:

Scala:
```scala
object Solution {
// 导入包
Expand All @@ -377,7 +379,8 @@ object Solution {
}
```

C#:
### C#:

```csharp
public class Solution {
public int[] TwoSum(int[] nums, int target) {
Expand All @@ -396,7 +399,8 @@ public class Solution {
}
```

Dart:
### Dart:

```dart
List<int> twoSum(List<int> nums, int target) {
var tmp = [];
Expand All @@ -411,7 +415,8 @@ List<int> twoSum(List<int> nums, int target) {
}
```

C:
### C:

```c


Expand Down Expand Up @@ -496,3 +501,4 @@ int* twoSum(int* nums, int numsSize, int target, int* returnSize){
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
</a>

23 changes: 12 additions & 11 deletions problems/0005.最长回文子串.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,17 @@
* 输出:"a"


# 思路
## 思路

本题和[647.回文子串](https://programmercarl.com/0647.回文子串.html) 差不多是一样的,但647.回文子串更基本一点,建议可以先做647.回文子串

## 暴力解法
### 暴力解法

两层for循环,遍历区间起始位置和终止位置,然后判断这个区间是不是回文。

时间复杂度:O(n^3)

## 动态规划
### 动态规划

动规五部曲:

Expand Down Expand Up @@ -208,7 +208,7 @@ public:
* 时间复杂度:O(n^2)
* 空间复杂度:O(n^2)
## 双指针
### 双指针
动态规划的空间复杂度是偏高的,我们再看一下双指针法。
Expand Down Expand Up @@ -258,9 +258,9 @@ public:



# 其他语言版本
## 其他语言版本

Java:
### Java:

```java
// 双指针 动态规划
Expand Down Expand Up @@ -327,7 +327,7 @@ class Solution {
}
```

Python:
### Python:

```python
class Solution:
Expand Down Expand Up @@ -377,7 +377,7 @@ class Solution:
return s[start:end]

```
Go:
### Go:

```go
func longestPalindrome(s string) string {
Expand Down Expand Up @@ -411,7 +411,7 @@ func longestPalindrome(s string) string {

```

JavaScript:
### JavaScript:

```js
//动态规划解法
Expand Down Expand Up @@ -527,7 +527,7 @@ var longestPalindrome = function(s) {
};
```

C:
### C:

动态规划:
```c
Expand Down Expand Up @@ -615,7 +615,7 @@ char * longestPalindrome(char * s){
}
```

C#:
### C#:

動態規則:
```c#
Expand Down Expand Up @@ -681,3 +681,4 @@ public class Solution {
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
</a>

Loading

0 comments on commit f08eaaa

Please sign in to comment.