Skip to content

Commit

Permalink
feat(chapter1): add go code to chapter1
Browse files Browse the repository at this point in the history
1.add go code to chapter_computational_complexity
2.add go code to space_time_tradeoff.md
3. Indentation of Go code is tab in *.go , 4 spaces in *.md
  • Loading branch information
Reanon committed Nov 25, 2022
1 parent 11fb3f5 commit 09d89dc
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 2 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

# Editor
.vscode/
.idea/

# mkdocs files
site/
Expand Down
30 changes: 30 additions & 0 deletions codes/go/chapter_computational_complexity/leetcode_two_sum.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// File: leetcode_two_sum.go
// Created Time: 2022-11-25
// Author: reanon ([email protected])

package chapter_computational_complexity

// twoSumBruteForce
func twoSumBruteForce(nums []int, target int) []int {
size := len(nums)
for i := 0; i < size-1; i++ {
for j := i + 1; i < size; j++ {
if nums[i]+nums[j] == target {
return []int{i, j}
}
}
}
return nil
}

// twoSumHashTable
func twoSumHashTable(nums []int, target int) []int {
hashTable := map[int]int{}
for idx, val := range nums {
if preIdx, ok := hashTable[target-val]; ok {
return []int{preIdx, idx}
}
hashTable[val] = idx
}
return nil
}
24 changes: 24 additions & 0 deletions codes/go/chapter_computational_complexity/leetcode_two_sum_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// File: leetcode_two_sum.go
// Created Time: 2022-11-25
// Author: reanon ([email protected])

package chapter_computational_complexity

import (
"testing"
)

func TestTwoSum(t *testing.T) {
// ======= Test Case =======
nums := []int{2, 7, 11, 15}
target := 9

// ====== Driver Code ======
// 方法一:暴力解法
res := twoSumBruteForce(nums, target)
t.Log("brute force:", res)

// 方法二:哈希表
res = twoSumHashTable(nums, target)
t.Log("hash table:", res)
}
3 changes: 3 additions & 0 deletions codes/go/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module github.com/krahets/hello-algo

go 1.19
37 changes: 35 additions & 2 deletions docs/chapter_computational_complexity/space_time_tradeoff.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
=== "C++"

```cpp title="leetcode_two_sum.cpp"

```

=== "Python"
Expand All @@ -42,6 +42,24 @@

```

=== "Go"

```go title="leetcode_two_sum.go"
func twoSum(nums []int, target int) []int {
size := len(nums)
for i := 0; i < size-1; i++ {
for j := i + 1; i < size; j++ {
if nums[i]+nums[j] == target {
return []int{i, j}
}
}
}
return nil
}
```



### 方法二:辅助哈希表

时间复杂度 $O(N)$ ,空间复杂度 $O(N)$ ,属于「空间换时间」。
Expand Down Expand Up @@ -69,11 +87,26 @@
=== "C++"

```cpp title="leetcode_two_sum.cpp"

```

=== "Python"

```python title="leetcode_two_sum.py"

```

=== "Go"

```go title="leetcode_two_sum.go"
func twoSumHashTable(nums []int, target int) []int {
hashTable := map[int]int{}
for idx, val := range nums {
if preIdx, ok := hashTable[target-val]; ok {
return []int{preIdx, idx}
}
hashTable[val] = idx
}
return nil
}
```

0 comments on commit 09d89dc

Please sign in to comment.