算法分析与设计第十一周:416. Partition Equal Subset Sum
2017-05-01 23:30
417 查看
思路:
1.对数组进行排序并取得数组的总和
2.从大到小对数组进行筛选
3.只要有一种可行方案即返回True
不加中文注释时的代码效率:
1.对数组进行排序并取得数组的总和
2.从大到小对数组进行筛选
3.只要有一种可行方案即返回True
class Solution(object): def canPartition(self, nums): if len(nums) <= 1: return False sum1 = sum(nums) nums.sort() #若数组中最大值大于数组总和值的一半,则直接返回False if sum1 % 2 == 1 or nums[-1] > (sum1 >> 1): return False def rec(nums, size, val): if val == 0: return True yes = False #遍历搜索各种可能的组合 for i in range(size - 1, -1, -1): if nums[i] <= val: yes |= rec(nums[0:i] + nums[i + 1:], size - 1, val - nums[i]) if yes: return True return yes #因为要将数组分为等值的两部分,所以传入数组总和的一半值 return rec(nums, len(nums), sum1 >> 1)
不加中文注释时的代码效率:
相关文章推荐
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 【Leetcode】416-Partition Equal Subset Sum -- javascript解法 01背包问题
- 416. Partition Equal Subset Sum
- leetcode-416-Partition Equal Subset Sum
- leetcode 416 Partition Equal Subset Sum 对半分
- leetcode 416 c++. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum(第十六周)
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- [LeetCode416]Partition Equal Subset Sum
- LeetCode - 416 - Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- LeetCode[416] Partition Equal Subset Sum
- 416. Partition Equal Subset Sum