From e38ee114cb370a4c56de3ffe446e34b706b3eb5c Mon Sep 17 00:00:00 2001 From: ZGGSONG Date: Sun, 13 Mar 2022 14:42:08 +0800 Subject: [PATCH] add leedcode ex.1 --- LeetCode/Ex.1/main.go | 48 +++++++++++++++++++++++++++++++++++++++++++ Map/main.go | 8 ++------ Slice/main.go | 8 ++++---- 3 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 LeetCode/Ex.1/main.go diff --git a/LeetCode/Ex.1/main.go b/LeetCode/Ex.1/main.go new file mode 100644 index 0000000..9c87aa0 --- /dev/null +++ b/LeetCode/Ex.1/main.go @@ -0,0 +1,48 @@ +package main + +import "fmt" + +/** +1. 两数之和 +给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。 +你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 +你可以按任意顺序返回答案。 +输入:nums = [2,7,11,15], target = 9 +输出:[0,1] +解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 +*/ +func main() { + array := []int{2, 7, 11, 15} + target := 9 + res := twoSum2(array, target) + fmt.Println(res) +} + +//暴力方法 +func twoSum(nums []int, target int) []int { + for i := 0; i < len(nums)-1; i++ { + for j := i + 1; j < len(nums); j++ { + if nums[i]+nums[j] == target { + return []int{i, j} + } + } + } + return nil +} + +//哈希表法 +//slice [ 1, 3, 4, 6] +//slice index 0 1 2 3 +//map key 3, 1, 6, 4 +//map value 1, 0, 3, 2 +func twoSum2(nums []int, target int) []int { + tmp := make(map[int]int) + for k, v := range nums { + if value, ok := tmp[target-v]; ok { + return []int{value, k} + } else { + tmp[v] = k + } + } + return nil +} diff --git a/Map/main.go b/Map/main.go index adad1dd..0467f60 100644 --- a/Map/main.go +++ b/Map/main.go @@ -9,7 +9,7 @@ import ( func main() { myMap := make(map[string]int) myMap["song"] = 1 - myMap["zong"] = 2 + myMap["zhang"] = 2 fmt.Println(myMap) myMap2 := map[string]string{ @@ -38,7 +38,7 @@ func main() { // IsExist 键是否存在 func IsExist() (int, bool) { fmt.Println("===IsExist===") - mMap := make(map[string]int) + mMap := make(map[string]int) //map类型的变量默认初始值为nil,需要使用make()函数来分配内存 mMap["张三"] = 333 mMap["李四"] = 444 v, ok := mMap["张三"] @@ -111,10 +111,6 @@ func RangeMap2() { fmt.Println() } -func test() { - SliceMap() -} - // MapSlice 元素为map类型的切片 func MapSlice() { fmt.Println("===元素为map类型的切片===") diff --git a/Slice/main.go b/Slice/main.go index df420d5..f859bd2 100644 --- a/Slice/main.go +++ b/Slice/main.go @@ -6,9 +6,9 @@ import ( ) func main() { - var a []string - b := []int{} - c := []bool{true, false} + var a []string //声明一个字符串切片 + b := []int{} //声明一个整型切片并初始化 + c := []bool{true, false} //声明一个整型切片并初始化 fmt.Println(a) fmt.Println(b) fmt.Println(c) @@ -76,6 +76,6 @@ func main() { sort.Slice(ms, func(i, j int) bool { return ms[i] < ms[j] }) - + fmt.Printf("Sort: %v\n%v\n", mm, ms) }