这周开始实习了,期间改了改成绩已经出来的毕业论文,发给导师,不知道有没有发表的机会。实习后,虽然实际任务不多,但每天七点起床,来回通勤两个小时,已让我疲惫。好久没有练手了,这次比以往多了些浮躁,少了之前从代码的逻辑中体会到的快乐。希望以后会变好。
78. 子集
题目链接:78. 子集 - 力扣(LeetCode)
思路
nums的子集互不相同,题目变得简单,不用考虑去重。与组合不同的是,我们这次不只在叶子节点中收获结果,而是在没进入一个递归,便收集一次。(e.g. nums = [1, 2, 3], 在同一条枝杈,我们要依次把[1],[1,2]...加进result中,而不只是最后的[1,2,3]。
代码实现
class Solution(object):def backtracking(self, nums, startIndex, path, result):result.append(path[:])if startIndex > len(nums):returnfor i in range(startIndex, len(nums)):path.append(nums[i])self.backtracking(nums, i+1, path, result)path.pop()def subsets(self, nums):result = []self.backtracking(nums, 0, [], result)return result