Leetcode 416. Partition Equal Subset Sum (Medium) (cpp)

Leetcode 416. Partition Equal Subset Sum (Medium) (cpp)

Tag: Dynamic Programming

Difficulty: Medium


/*

416. Partition Equal Subset Sum (Medium)

Given a non-empty array containing only positive integers, find if the array can be partitioned into two subsets such that the sum of elements in both subsets is equal.

Note:
Each of the array element will not exceed 100.
The array size will not exceed 200.
Example 1:

Input: [1, 5, 11, 5]

Output: true

Explanation: The array can be partitioned as [1, 5, 5] and [11].
Example 2:

Input: [1, 2, 3, 5]

Output: false

Explanation: The array cannot be partitioned into equal sum subsets.

*/
class Solution {
public:
	bool canPartition(vector<int>& nums) {
		int sum = accumulate(nums.begin(), nums.end(), 0);
		if (sum & 1) {
			return false;
		}
		sum >>= 1;
		bool t[sum + 1] = { false };
		t[0] = true;
		for (int i = 0; i < nums.size(); i++) {
			for (int j = sum; j >= nums[i]; j--) {
				if (t[j]) {
					break;
				}
				t[j] = t[j] || t[j - nums[i]];
			}
		}
		return t[sum];
	}
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章