3566. Partition Array into Two Equal Product Subsets
Description
You are given an integer array nums
containing distinct positive integers and an integer target
.
Determine if you can partition nums
into two non-empty disjoint subsets, with each element belonging to exactly one subset, such that the product of the elements in each subset is equal to target
.
Return true
if such a partition exists and false
otherwise.
A subset of an array is a selection of elements of the array.
Example 1:
Input: nums = [3,1,6,8,4], target = 24
Output: true
Explanation: The subsets [3, 8]
and [1, 6, 4]
each have a product of 24. Hence, the output is true.
Example 2:
Input: nums = [2,5,3,7], target = 15
Output: false
Explanation: There is no way to partition nums
into two non-empty disjoint subsets such that both subsets have a product of 15. Hence, the output is false.
Constraints:
3 <= nums.length <= 12
1 <= target <= 1015
1 <= nums[i] <= 100
- All elements of
nums
are distinct.
Solutions
Solution 1: Binary Enumeration
We can use binary enumeration to check all possible subset partitions. For each subset partition, we can calculate the product of the two subsets and check whether both are equal to the target value.
Specifically, we can use an integer \(i\) to represent the state of the subset partition, where the binary bits of \(i\) indicate whether each element belongs to the first subset. For each possible \(i\), we calculate the product of the two subsets and check whether both are equal to the target value.
The time complexity is \(O(2^n \times n)\), where \(n\) is the length of the array. The space complexity is \(O(1)\).
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|