摘要: 回溯算法(超时 72/75): 1. 跳出条件: if position == n : self.res =True / if position > n : return 2. 递归条件: 遍历 position 所有可以跳跃的位置 3. 更新条件,这里不再是更新 resList,是更新res, 需 阅读全文
posted @ 2020-08-31 12:17 ChevisZhang 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 回溯算法重点: 1. 跳出条件,nums中元素用完 2. 递归的岔路: 加入元素/不加入元素 helper(curList+[nums[i]], nums[1:]) / helper(curList, nums[1:] ) 3.如果是求排列问题,则不能sort,因为lists中元素一样,只是排列不一 阅读全文
posted @ 2020-08-31 10:21 ChevisZhang 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 回溯算法动笔之前需要思考清楚的点: 1. 跳出条件,len(curList) == len(nums) 2. 递归时选择新加入哪些元素 for i in range(len(curNums)): 3. 递归更新条件 helper( curList+[curNums[i]], curNums[:i]+ 阅读全文
posted @ 2020-08-31 10:09 ChevisZhang 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 本题与第39题唯一差别就是,元素只能用一次,所以递归时候需要加入可用元素列表 candidate helper的重点: 1.跳出条件 sum == target 或 sum > target 2. 递归的选择 candidate 每次都往现有列表中往下延申 candidate个List 阅读全文
posted @ 2020-08-31 09:47 ChevisZhang 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 重点: 1. 回溯算法要确定跳出条件,什么时候将List加入Res 2. 一般的条件有,元素用完,sum大于target 等 3. 去重方法: list.sort() if list not in res: res.append(list) 阅读全文
posted @ 2020-08-31 09:34 ChevisZhang 阅读(68) 评论(0) 推荐(0) 编辑