Golang | Leetcode Golang题解之第77题组合

题目:

题解:

Go 复制代码
func combine(n int, k int) (ans [][]int) {
	// 初始化
	// 将 temp 中 [0, k - 1] 每个位置 i 设置为 i + 1,即 [0, k - 1] 存 [1, k]
	// 末尾加一位 n + 1 作为哨兵
	temp := []int{}
	for i := 1; i <= k; i++ {
		temp = append(temp, i)
	}
	temp = append(temp, n+1)

	for j := 0; j < k; {
		comb := make([]int, k)
		copy(comb, temp[:k])
		ans = append(ans, comb)
		// 寻找第一个 temp[j] + 1 != temp[j + 1] 的位置 t
		// 我们需要把 [0, t - 1] 区间内的每个位置重置成 [1, t]
		for j = 0; j < k && temp[j]+1 == temp[j+1]; j++ {
			temp[j] = j + 1
		}
		// j 是第一个 temp[j] + 1 != temp[j + 1] 的位置
		temp[j]++
	}
	return
}
相关推荐
十八岁讨厌编程10 分钟前
【算法训练营 · 补充】LeetCode Hot100(中)
算法·leetcode
钢门狂鸭1 小时前
go开发规范指引
开发语言·驱动开发·golang
小当家.1052 小时前
[LeetCode]Hot100系列.贪心总结+思想总结
算法·leetcode·职场和发展
脚踏实地的大梦想家2 小时前
【Go】P19 Go语言并发编程核心(三):从 Channel 安全到互斥锁
开发语言·安全·golang
im_AMBER3 小时前
Leetcode 46
c语言·c++·笔记·学习·算法·leetcode
Tony Bai3 小时前
Go GUI 开发的“绝境”与“破局”:2025 年现状与展望
开发语言·后端·golang
豆浆whisky3 小时前
Go分布式追踪实战:从理论到OpenTelemetry集成|Go语言进阶(15)
开发语言·分布式·golang
Tony Bai3 小时前
【Go模块构建与依赖管理】08 深入 Go Module Proxy 协议
开发语言·后端·golang
QX_hao3 小时前
【Go】--文件和目录的操作
开发语言·c++·golang
努力学算法的蒟蒻4 小时前
day09(11.6)——leetcode面试经典150
算法·leetcode·职场和发展