用 golang 刷leetcode
从零开始记录一下用 golang 刷 leetcode 的技巧
基础使用
常用方法
遍历数组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15// for 循环
for i := 0; i < len(nums); i++ {
fmt.Println(nums[i])
}
// range 循环
for i, num := range nums {
fmt.Println(i, num)
}
// 区别
// 1. 语法: for 循环需要手动管理索引,而 range 循环更简洁。
// 2. 可读性: range 循环通常更容易理解。
// 3. 性能: 两者性能差异不大,但 range 循环在某些情况下更高效。
// 4. 元素访问: range 提供了直接访问元素值的方式。
数据结构
slice
slice 是一个动态数组,类似于 C++ 的 vector
创建一个 slice
1
2
3
4
5
6
7
8
9
10// 使用 make 创建空切片
slice1 := make([]int, 0)
// 使用字面量创建空切片
slice2 := []int{}
// 两者区别
// 1. 长度与容量: make 可以直接指定长度和容量,适合已知长度的场景;字面量创建的切片则是空的。
// 2. 性能: 使用 make 可以减少内存分配次数,提高性能,特别是在计划添加多个元素时。
// 3. 初始化: make 创建的切片有默认值,而字面量创建的切片没有元素返回一个 slice
1
2// 返回 []int 为例
return []int{1,2}
map
创建一个 map
1
m := make(map[int]int)
判断元素是否在 map 存在
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16// 方法一
dict := map[string]int{"key1": 1, "key2": 2}
value, ok := dict["key1"]
if ok {
fmt.Printf(value)
} else {
fmt.Println("key1 不存在")
}
// 方法二
dict := map[string]int{"key1": 1, "key2": 2}
if value, ok := dict["key1"]; ok {
fmt.Printf(value)
} else {
fmt.Println("key1 不存在")
}
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 cv-programmer!




