文章目录
- 0、前言
- 1、GoLang 算法必会技巧
- 1.1、标准库
- 1.1.1、sort 包
- 1.1.2、slice 包
- 1.2、数据结构
- 1.2.1、优先队列
- 2、板子
- 2.1、二分
0、前言
整理一下 golang 的算法板子,作为备忘录使用。可能有些板子、博文是引用互联网博主的,会注明出处,在此多蟹…
1、GoLang 算法必会技巧
1.1、标准库
1.1.1、sort 包
引用:
- 其他博主: [Go语言tips01]浅谈sort包
- 官方库 Go1.24.0-sort
例题:
- [M二分] lc34. 在排序数组中查找元素的第一个和最后一个位置(二分+经典)
[M二分] lc2080. 区间内查询数字的频率(模拟+二分+数据结构+Go二分库函数+知识总结)- sort.SearchInts 练习掌握
1.1.2、slice 包
引用:
- 官方库 Go1.24.0-slice
例题:
- lc 灵神 —【视频讲解】二分查找总是写不对?三种写法,一个视频讲透!(Python/Java/C++/C/Go/JS)
- slices.BinarySearch
1.2、数据结构
1.2.1、优先队列
堆这块,日后补,大根堆、小根堆啥的
2、板子
2.1、二分
整数二分、浮点数二分:
- 其他博主: [Go语言tips01]浅谈sort包
- 官方库 Go1.24.0-sort
- sort.SearchInts 系列函数
lower_bound、upper_bound
- [M二分] lc2080. 区间内查询数字的频率(模拟+二分+数据结构+Go二分库函数+知识总结)
func upperBound(pos []int, target int) int {l, r := 0, len(pos)-1for l <= r {mid := l + (r - l) / 2if pos[mid] <= target {l = mid + 1} else {r = mid - 1}}return l
}func lowerBound(pos []int, target int) int {l, r := 0, len(pos) - 1for l <= r {mid := l + (r - l) / 2if pos[mid] < target {l = mid + 1} else {r = mid - 1}}return l
}