- 一般不直接使用常規陣列。
- 切片是陣列的抽象。
- 切片是底層 array 的一個 view
定義一個切片
定義一個長度為 10,容量為 10 的整型切片
var slice []int
slice := make([]int, 10, 10)
切片底層實現
- ptr 指向頭元素的指標
- len 切片長度
- cap 切片容量
切片操作
slice := []int{0, 1, 2, 3, 4, 5, 6, 7, 8}
sliceOne := slice[2:6]
sliceTwo := sliceOne[3:7]
sliceThree := append(slice, 1)
// sliceOne: [2 3 4 5]
// sliceTwo: [5 6 7 8]
// sliceThree: [0 1 2 3 4 5 6 7 8 1]
經典兩數之和
func twoSum(nums []int, target int) []int {
if len(nums) < 2 {
return nil
}
var res []int
tmpMap := make(map[int]int)
for k, num := range nums {
if _, ok := tmpMap[target-num]; ok {
res = append(res, tmpMap[target-num], k)
return res
}
tmpMap[num] = k
}
return nil
}