Leetcode 3566. Partition Array into Two Equal Product Subsets

  • [Leetcode 3566. Partition Array into Two Equal Product Subsets](#Leetcode 3566. Partition Array into Two Equal Product Subsets)
    • [1. 解题思路](#1. 解题思路)
    • [2. 代码实现](#2. 代码实现)

1. 解题思路

这一题我的实现还是比较暴力的,首先显而易见的,若要满足题目要求,则给出的数组的所有元素的乘积必然是target的平方,因此,我们可以快速由此判断该数组是否可分。

然后,在满足上述条件的前提下,我们就是要找到若干个元素使之乘积恰好为target,这个的话我们可以通过一个动态规划进行实现。

2. 代码实现

给出python代码实现如下:

python 复制代码
class Solution:
    def checkEqualPartitions(self, nums: List[int], target: int) -> bool:
        prod = 1
        for num in nums:
            prod *= num
        if prod != target * target:
            return False

        n = len(nums)
        @lru_cache(None)
        def dp(idx, tgt):
            if tgt == 1:
                return True
            if idx >= n:
                return False
            if 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。

相关推荐
kingmax542120083 小时前
动态规划十大经典题型状态转移、模版等整理(包括leetcode、洛谷题号)
算法·leetcode·动态规划
开开心心就好5 小时前
小巧实用,Windows文件夹着色软件推荐
java·开发语言·前端·决策树·c#·ocr·动态规划
编程绿豆侠14 小时前
力扣HOT100之多维动态规划:62. 不同路径
算法·leetcode·动态规划
.Vcoistnt14 小时前
Codeforces Round 1028 (Div. 2)(A-D)
数据结构·c++·算法·贪心算法·动态规划
一只鱼^_15 小时前
力扣第452场周赛
数据结构·c++·算法·leetcode·贪心算法·动态规划·剪枝
数据皮皮侠AI17 小时前
中国城市间地理距离矩阵(2024)
大数据·人工智能·线性代数·算法·矩阵·动态规划·制造
Espresso Macchiato2 天前
Leetcode 3567. Minimum Absolute Difference in Sliding Submatrix
leetcode·leetcode medium·leetcode周赛452·leetcode 3567
萧瑟其中~2 天前
动态规划第二弹:路径类问题(不同路径,珠宝的最高价值,地下城游戏)
算法·动态规划
Ymmmm__3 天前
leetcode动态规划—买卖股票系列
算法·leetcode·动态规划