LeetCode 491. 递增子序列Golang版
1. 问题描述
给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是 2 。

2. 思路
回溯模板
3. 代码
func findSubsequences(nums []int) [][]int {
var res [][]int
var path []int
backtracking(nums, 0, path, &res)
return res
}
func backtracking(nums []int, startIndex int, path []int, res *[][]int) {
if len(path) > 1 {
temp := make([]int, len(path))
copy(temp, path)
*res = append(*res, temp)
}
var used [201]int
for i := startIndex; i < len(nums); i++ {
// fmt.Println(path[len(path) - 1])
// 如果nums[i] < path[len(path)-1],即非递增序列,跳过。
if len(path) != 0 && nums[i] < path[len(path) - 1] || used[nums[i] + 100 ] == 1 {
continue
}
used[nums[i] + 100] = 1
path = append(path, nums[i])
backtracking(nums, i+ 1, path, res)
path = path[:len(path) - 1]
}
}
LeetCode 491:递增子序列的Golang解法
这篇博客主要介绍了如何使用回溯算法解决LeetCode第491题——找到整型数组的所有递增子序列。代码中给出了详细的回溯模板实现,通过遍历和剪枝策略确保找到所有满足条件的子序列。
290

被折叠的 条评论
为什么被折叠?



