数据结构—数组
相关数据结构实现用go语言实现
相关代码做题合集:https://github.com/longpi1/algorithm-pattern
数组(Array)
在 Go 中,数组是固定长度的连续内存块,长度在定义时确定且不可变。数组的使用场景较少,因为切片(slice)更加灵活,通常更常用。所以在做算法题时一般用切片进行编写
定义和特点
- 数组的长度是类型的一部分,例如
[3]int
和 [4]int
是不同的类型。
- 数组是值类型,赋值或传递时会复制整个数组。
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package main
import "fmt"
func main() { var arr [3]int fmt.Println("初始数组:", arr)
arr = [3]int{1, 2, 3} fmt.Println("初始化后:", arr)
arr[1] = 10 fmt.Println("修改后:", arr)
fmt.Println("数组长度:", len(arr)) }
|
注意事项
- 如果需要动态长度的数据结构,应该使用切片(slice)而不是数组。
- 数组适合在长度固定的场景下使用,例如矩阵或固定大小的集合。
相关练习题
704. 二分查找
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
func search(nums []int, target int) int { left := 0 right := len(nums) - 1 for left <= right { mid := (right + left)/2 if nums[mid] == target { return mid } if nums[mid] > target { right = mid - 1 } else { left++ } } return -1 }
|
27. 移除元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
func removeElement(nums []int, val int) int { for i := len(nums) - 1; i >= 0; i-- { if nums[i] == val { nums = append(nums[0:i], nums[i+1:]...) } } return len(nums) }
|