From 3e2b80b87f76e0bb5464a7455a9775591bc1d90d Mon Sep 17 00:00:00 2001 From: zixinfeixin666 <1781935376@qq.com> Date: 2023年9月22日 02:00:07 +0800 Subject: [PATCH 1/2] commit demo --- exercise/demo.go | 1 + 1 file changed, 1 insertion(+) create mode 100644 exercise/demo.go diff --git a/exercise/demo.go b/exercise/demo.go new file mode 100644 index 00000000..3d2016b6 --- /dev/null +++ b/exercise/demo.go @@ -0,0 +1 @@ +package exercise From a913a00ef97676b86d1d94d82affd103477fa215 Mon Sep 17 00:00:00 2001 From: zixinfeixin666 <1781935376@qq.com> Date: 2023年9月23日 14:59:03 +0800 Subject: [PATCH 2/2] commit strStr and subsets by using go --- exercise/demo.go | 44 +++++++++++++++++++++++++++++++++++++++++++- exercise/strStr.go | 19 +++++++++++++++++++ exercise/subsets.go | 18 ++++++++++++++++++ 3 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 exercise/strStr.go create mode 100644 exercise/subsets.go diff --git a/exercise/demo.go b/exercise/demo.go index 3d2016b6..ceed71c0 100644 --- a/exercise/demo.go +++ b/exercise/demo.go @@ -1 +1,43 @@ -package exercise +package main + +import ( + "fmt" + "sort" +) + +func main() { + //栈 + stack := make([]int, 0) + stack = append(stack, 10) + v := stack[len(stack)-1] + stack = stack[:len(stack)-1] + if len(stack) == 0 { + + } + + //队列 + queue := make([]int, 0) + queue = append(queue, 10) + q := queue[0] + queue = queue[1:] + fmt.Printf("%d", q) + if len(queue) == 0 { + + } + + //map + m := make(map[string]int) + m["hello"] = 1 + delete(m, "hello") + for k, v := range m { + print(k, v) + } + //map 键需要可比较,不能为 slice、map、function + //map 值都有默认值,可以直接操作默认值,如:m[age]++ 值由 0 变为 1 + //比较两个 map 需要遍历,其中的 kv 是否相同,因为有默认值关系,所以需要检查 val 和 ok 两个值 + fmt.Printf("%d%d", v, stack) + + s := []int{1, 2, 3, 4, 5, 6, 9, 4} + sort.Ints(s) + println(s) +} diff --git a/exercise/strStr.go b/exercise/strStr.go new file mode 100644 index 00000000..8b14abfb --- /dev/null +++ b/exercise/strStr.go @@ -0,0 +1,19 @@ +package main + +func strStr(haystack string, needle string) int { + if len(needle) == 0 { + return 0 + } + var i, j int + for i = 0; i < len(haystack)-len(needle)+1; i++ { + for j = 0; j < len(needle); j++ { + if haystack[i+j] != needle[j] { + break + } + } + if len(needle) == j { + return i + } + } + return -1 +} diff --git a/exercise/subsets.go b/exercise/subsets.go new file mode 100644 index 00000000..48f9684b --- /dev/null +++ b/exercise/subsets.go @@ -0,0 +1,18 @@ +package main + +func subsets(nums []int) [][]int { + result := make([][]int, 0) + list := make([]int, 0) + backtrack(nums, 0, list, &result) + return result +} +func backtrack(nums []int, pos int, list []int, result *[][]int) { + ans := make([]int, len(list)) + copy(ans, list) + *result = append(*result, ans) + for i := pos; i < len(nums); i++ { + list := append(list, nums[i]) + backtrack(nums, i+1, list, result) + list = list[0 : len(list)-1] + } +}