Leetcode 3566. Partition Array into Two Equal Product Subsets
- Leetcode 3566. Partition Array into Two Equal Product Subsets
- 1. 解题思路
- 2. 代码实现
- 题目链接:3566. Partition Array into Two Equal Product Subsets
1. 解题思路
这一题我的实现还是比较暴力的,首先显而易见的,若要满足题目要求,则给出的数组的所有元素的乘积必然是target的平方,因此,我们可以快速由此判断该数组是否可分。
然后,在满足上述条件的前提下,我们就是要找到若干个元素使之乘积恰好为target,这个的话我们可以通过一个动态规划进行实现。
2. 代码实现
给出python代码实现如下:
class Solution:def checkEqualPartitions(self, nums: List[int], target: int) -> bool:prod = 1for num in nums:prod *= numif prod != target * target:return Falsen = len(nums)@lru_cache(None)def dp(idx, tgt):if tgt == 1:return Trueif idx >= n:return Falseif tgt % nums[idx] == 0:return dp(idx+1, tgt) or dp(idx+1, tgt // nums[idx])else:return dp(idx+1, tgt)return dp(0, target)
提交代码评测得到:耗时7ms,占用内存18.5MB。