Sort the coding languages by applications. (#721)

This commit is contained in:
Yudong Jin
2023-09-04 03:19:08 +08:00
committed by GitHub
parent 8d5e84f70a
commit 9c3b7b6422
55 changed files with 6826 additions and 6826 deletions
@@ -98,10 +98,10 @@ $$
- **终止条件**:当 $i = 0$ 且 $j = 0$ 时,返回代价 $grid[0, 0]$ 。
- **剪枝**:当 $i < 0$ 时或 $j < 0$ 时索引越界,此时返回代价 $+\infty$ ,代表不可行。
=== "Java"
=== "Python"
```java title="min_path_sum.java"
[class]{min_path_sum}-[func]{minPathSumDFS}
```python title="min_path_sum.py"
[class]{}-[func]{min_path_sum_dfs}
```
=== "C++"
@@ -110,10 +110,16 @@ $$
[class]{}-[func]{minPathSumDFS}
```
=== "Python"
=== "Java"
```python title="min_path_sum.py"
[class]{}-[func]{min_path_sum_dfs}
```java title="min_path_sum.java"
[class]{min_path_sum}-[func]{minPathSumDFS}
```
=== "C#"
```csharp title="min_path_sum.cs"
[class]{min_path_sum}-[func]{minPathSumDFS}
```
=== "Go"
@@ -122,6 +128,12 @@ $$
[class]{}-[func]{minPathSumDFS}
```
=== "Swift"
```swift title="min_path_sum.swift"
[class]{}-[func]{minPathSumDFS}
```
=== "JS"
```javascript title="min_path_sum.js"
@@ -134,30 +146,6 @@ $$
[class]{}-[func]{minPathSumDFS}
```
=== "C"
```c title="min_path_sum.c"
[class]{}-[func]{minPathSumDFS}
```
=== "C#"
```csharp title="min_path_sum.cs"
[class]{min_path_sum}-[func]{minPathSumDFS}
```
=== "Swift"
```swift title="min_path_sum.swift"
[class]{}-[func]{minPathSumDFS}
```
=== "Zig"
```zig title="min_path_sum.zig"
[class]{}-[func]{minPathSumDFS}
```
=== "Dart"
```dart title="min_path_sum.dart"
@@ -170,6 +158,18 @@ $$
[class]{}-[func]{min_path_sum_dfs}
```
=== "C"
```c title="min_path_sum.c"
[class]{}-[func]{minPathSumDFS}
```
=== "Zig"
```zig title="min_path_sum.zig"
[class]{}-[func]{minPathSumDFS}
```
下图给出了以 $dp[2, 1]$ 为根节点的递归树,其中包含一些重叠子问题,其数量会随着网格 `grid` 的尺寸变大而急剧增多。
本质上看,造成重叠子问题的原因为:**存在多条路径可以从左上角到达某一单元格**。
@@ -182,10 +182,10 @@ $$
我们引入一个和网格 `grid` 相同尺寸的记忆列表 `mem` ,用于记录各个子问题的解,并将重叠子问题进行剪枝。
=== "Java"
=== "Python"
```java title="min_path_sum.java"
[class]{min_path_sum}-[func]{minPathSumDFSMem}
```python title="min_path_sum.py"
[class]{}-[func]{min_path_sum_dfs_mem}
```
=== "C++"
@@ -194,10 +194,16 @@ $$
[class]{}-[func]{minPathSumDFSMem}
```
=== "Python"
=== "Java"
```python title="min_path_sum.py"
[class]{}-[func]{min_path_sum_dfs_mem}
```java title="min_path_sum.java"
[class]{min_path_sum}-[func]{minPathSumDFSMem}
```
=== "C#"
```csharp title="min_path_sum.cs"
[class]{min_path_sum}-[func]{minPathSumDFSMem}
```
=== "Go"
@@ -206,6 +212,12 @@ $$
[class]{}-[func]{minPathSumDFSMem}
```
=== "Swift"
```swift title="min_path_sum.swift"
[class]{}-[func]{minPathSumDFSMem}
```
=== "JS"
```javascript title="min_path_sum.js"
@@ -218,30 +230,6 @@ $$
[class]{}-[func]{minPathSumDFSMem}
```
=== "C"
```c title="min_path_sum.c"
[class]{}-[func]{minPathSumDFSMem}
```
=== "C#"
```csharp title="min_path_sum.cs"
[class]{min_path_sum}-[func]{minPathSumDFSMem}
```
=== "Swift"
```swift title="min_path_sum.swift"
[class]{}-[func]{minPathSumDFSMem}
```
=== "Zig"
```zig title="min_path_sum.zig"
[class]{}-[func]{minPathSumDFSMem}
```
=== "Dart"
```dart title="min_path_sum.dart"
@@ -254,6 +242,18 @@ $$
[class]{}-[func]{min_path_sum_dfs_mem}
```
=== "C"
```c title="min_path_sum.c"
[class]{}-[func]{minPathSumDFSMem}
```
=== "Zig"
```zig title="min_path_sum.zig"
[class]{}-[func]{minPathSumDFSMem}
```
如下图所示,在引入记忆化后,所有子问题的解只需计算一次,因此时间复杂度取决于状态总数,即网格尺寸 $O(nm)$ 。
![记忆化搜索递归树](dp_solution_pipeline.assets/min_path_sum_dfs_mem.png)
@@ -262,10 +262,10 @@ $$
基于迭代实现动态规划解法。
=== "Java"
=== "Python"
```java title="min_path_sum.java"
[class]{min_path_sum}-[func]{minPathSumDP}
```python title="min_path_sum.py"
[class]{}-[func]{min_path_sum_dp}
```
=== "C++"
@@ -274,10 +274,16 @@ $$
[class]{}-[func]{minPathSumDP}
```
=== "Python"
=== "Java"
```python title="min_path_sum.py"
[class]{}-[func]{min_path_sum_dp}
```java title="min_path_sum.java"
[class]{min_path_sum}-[func]{minPathSumDP}
```
=== "C#"
```csharp title="min_path_sum.cs"
[class]{min_path_sum}-[func]{minPathSumDP}
```
=== "Go"
@@ -286,6 +292,12 @@ $$
[class]{}-[func]{minPathSumDP}
```
=== "Swift"
```swift title="min_path_sum.swift"
[class]{}-[func]{minPathSumDP}
```
=== "JS"
```javascript title="min_path_sum.js"
@@ -298,30 +310,6 @@ $$
[class]{}-[func]{minPathSumDP}
```
=== "C"
```c title="min_path_sum.c"
[class]{}-[func]{minPathSumDP}
```
=== "C#"
```csharp title="min_path_sum.cs"
[class]{min_path_sum}-[func]{minPathSumDP}
```
=== "Swift"
```swift title="min_path_sum.swift"
[class]{}-[func]{minPathSumDP}
```
=== "Zig"
```zig title="min_path_sum.zig"
[class]{}-[func]{minPathSumDP}
```
=== "Dart"
```dart title="min_path_sum.dart"
@@ -334,6 +322,18 @@ $$
[class]{}-[func]{min_path_sum_dp}
```
=== "C"
```c title="min_path_sum.c"
[class]{}-[func]{minPathSumDP}
```
=== "Zig"
```zig title="min_path_sum.zig"
[class]{}-[func]{minPathSumDP}
```
下图展示了最小路径和的状态转移过程,其遍历了整个网格,**因此时间复杂度为 $O(nm)$** 。
数组 `dp` 大小为 $n \times m$ **因此空间复杂度为 $O(nm)$** 。
@@ -380,10 +380,10 @@ $$
请注意,因为数组 `dp` 只能表示一行的状态,所以我们无法提前初始化首列状态,而是在遍历每行中更新它。
=== "Java"
=== "Python"
```java title="min_path_sum.java"
[class]{min_path_sum}-[func]{minPathSumDPComp}
```python title="min_path_sum.py"
[class]{}-[func]{min_path_sum_dp_comp}
```
=== "C++"
@@ -392,10 +392,16 @@ $$
[class]{}-[func]{minPathSumDPComp}
```
=== "Python"
=== "Java"
```python title="min_path_sum.py"
[class]{}-[func]{min_path_sum_dp_comp}
```java title="min_path_sum.java"
[class]{min_path_sum}-[func]{minPathSumDPComp}
```
=== "C#"
```csharp title="min_path_sum.cs"
[class]{min_path_sum}-[func]{minPathSumDPComp}
```
=== "Go"
@@ -404,6 +410,12 @@ $$
[class]{}-[func]{minPathSumDPComp}
```
=== "Swift"
```swift title="min_path_sum.swift"
[class]{}-[func]{minPathSumDPComp}
```
=== "JS"
```javascript title="min_path_sum.js"
@@ -416,30 +428,6 @@ $$
[class]{}-[func]{minPathSumDPComp}
```
=== "C"
```c title="min_path_sum.c"
[class]{}-[func]{minPathSumDPComp}
```
=== "C#"
```csharp title="min_path_sum.cs"
[class]{min_path_sum}-[func]{minPathSumDPComp}
```
=== "Swift"
```swift title="min_path_sum.swift"
[class]{}-[func]{minPathSumDPComp}
```
=== "Zig"
```zig title="min_path_sum.zig"
[class]{}-[func]{minPathSumDPComp}
```
=== "Dart"
```dart title="min_path_sum.dart"
@@ -451,3 +439,15 @@ $$
```rust title="min_path_sum.rs"
[class]{}-[func]{min_path_sum_dp_comp}
```
=== "C"
```c title="min_path_sum.c"
[class]{}-[func]{minPathSumDPComp}
```
=== "Zig"
```zig title="min_path_sum.zig"
[class]{}-[func]{minPathSumDPComp}
```