- Related Questions & Answers
- Program to check whether we can partition a list with k-partitions of equal sum in C++
- Program to check whether we can make k palindromes from given string characters or not in Python?
- Program to check whether we can take all courses or not in Python
- Program to check whether we can unlock all rooms or not in python
- Program to check whether we can get N queens solution or not in Python
- Program to check whether we can split list into consecutive increasing sublists or not in Python
- Program to check whether two trees can be formed by swapping nodes or not in Python
- Program to check whether leaves sequences are same of two leaves or not in python
- Program to check whether final string can be formed using other two strings or not in Python
- Program to check we can reach leftmost or rightmost position or not in Python
- Program to check whether parentheses are balanced or not in Python
- Java Program to check whether two Strings are an anagram or not.
- C# program to check whether two sequences are the same or not
- Program to check we can cross river by stones or not in Python
- 8085 program to check whether both the nibbles of 8 bit number are equal or not

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

Suppose we have a list of numbers called nums, we have to check whether we can partition nums into two groups where the sum of the elements in both groups are same.

So, if the input is like nums = [2, 3, 6, 5], then the output will be True, as we can make groups like: [2, 6] and [3, 5].

To solve this, we will follow these steps

total := sum of all elements in nums

if total is odd, then

return False

half := integer part of total / 2

dp := a list of size half + 1 and fill with false

dp[0] := true

for each num in nums, do

for i in range half to 0, decrease by 1, do

if i >= num, then

dp[i] := dp[i] OR dp[i - num]

return dp[half]

class Solution: def solve(self, nums): total = sum(nums) if total & 1: return False half = total // 2 dp = [True] + [False] * half for num in nums: for i in range(half, 0, -1): if i >= num: dp[i] |= dp[i - num] return dp[half] ob = Solution() nums = [2, 3, 6, 5] print(ob.solve(nums))

[2, 3, 6, 5]

True

Advertisements