题目
剪枝思路:
1、同层去重,同树枝不去重:本题可以排序,排序后直接nums[i] ==nums[i- 1]来去重
思路
剪枝思路:
1、同层去重,同树枝不去重:本题由于不让排序,所以不能通过和上一个元素是否相等来去重;而应该用set或者map来去重
2、对于小于父元素的直接剪枝
代码(25.12.5 首刷)
var (
ans [][]int
path []int
)
func findSubsequences(nums []int) [][]int {
// [4,4,4,6,7,4,6,7,8]
ans = make([][]int, 0)
path = make([]int, 0)
var dfs func(int)
dfs = func(start int){
used := [201]int{}
if start > len(nums){
return
}
if len(path) >= 2 {
ans = append(ans, slices.Clone(path))
}
for i := start; i < len(nums); i++{
if (len(path) >0 && nums[i] < path[len(path) - 1]) || used[nums[i] + 100] == 1{
continue
}
path = append(path, nums[i])
used[nums[i] + 100] = 1
dfs(i + 1)
path = path[:len(path) - 1]
}
}
dfs(0)
return ans
}





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



