Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a913a00

Browse files
committed
commit strStr and subsets by using go
1 parent 3e2b80b commit a913a00

File tree

3 files changed

+80
-1
lines changed

3 files changed

+80
-1
lines changed

‎exercise/demo.go

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,43 @@
1-
package exercise
1+
package main
2+
3+
import (
4+
"fmt"
5+
"sort"
6+
)
7+
8+
func main() {
9+
//栈
10+
stack := make([]int, 0)
11+
stack = append(stack, 10)
12+
v := stack[len(stack)-1]
13+
stack = stack[:len(stack)-1]
14+
if len(stack) == 0 {
15+
16+
}
17+
18+
//队列
19+
queue := make([]int, 0)
20+
queue = append(queue, 10)
21+
q := queue[0]
22+
queue = queue[1:]
23+
fmt.Printf("%d", q)
24+
if len(queue) == 0 {
25+
26+
}
27+
28+
//map
29+
m := make(map[string]int)
30+
m["hello"] = 1
31+
delete(m, "hello")
32+
for k, v := range m {
33+
print(k, v)
34+
}
35+
//map 键需要可比较,不能为 slice、map、function
36+
//map 值都有默认值,可以直接操作默认值,如:m[age]++ 值由 0 变为 1
37+
//比较两个 map 需要遍历,其中的 kv 是否相同,因为有默认值关系,所以需要检查 val 和 ok 两个值
38+
fmt.Printf("%d%d", v, stack)
39+
40+
s := []int{1, 2, 3, 4, 5, 6, 9, 4}
41+
sort.Ints(s)
42+
println(s)
43+
}

‎exercise/strStr.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package main
2+
3+
func strStr(haystack string, needle string) int {
4+
if len(needle) == 0 {
5+
return 0
6+
}
7+
var i, j int
8+
for i = 0; i < len(haystack)-len(needle)+1; i++ {
9+
for j = 0; j < len(needle); j++ {
10+
if haystack[i+j] != needle[j] {
11+
break
12+
}
13+
}
14+
if len(needle) == j {
15+
return i
16+
}
17+
}
18+
return -1
19+
}

‎exercise/subsets.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package main
2+
3+
func subsets(nums []int) [][]int {
4+
result := make([][]int, 0)
5+
list := make([]int, 0)
6+
backtrack(nums, 0, list, &result)
7+
return result
8+
}
9+
func backtrack(nums []int, pos int, list []int, result *[][]int) {
10+
ans := make([]int, len(list))
11+
copy(ans, list)
12+
*result = append(*result, ans)
13+
for i := pos; i < len(nums); i++ {
14+
list := append(list, nums[i])
15+
backtrack(nums, i+1, list, result)
16+
list = list[0 : len(list)-1]
17+
}
18+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /