g0401_0500.s0416_partition_equal_subset_sum.complexity.md Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
**Time Complexity (Big O Time):**
The time complexity of the program depends on two main factors:
1. The sum of all elements in the input array: The program iterates through the array to calculate the sum of all elements. This step takes O(n) time, where 'n' is the number of elements in the array.
2. Dynamic Programming (DP) Loop: The program uses a dynamic programming approach to determine if a subset sum (less than or equal to half of the total sum) can be achieved. It uses a 2D boolean array 'dp' with dimensions (n+1) x (sums/2+1), where 'n' is the number of elements in the array, and 'sums' is the sum of all elements. The nested loops that iterate through 'num' and 'sum' take O(n * sums) time.
Combining these two factors, the overall time complexity of the program is O(n * sums), where 'n' is the number of elements in the input array, and 'sums' is the sum of all elements.
**Space Complexity (Big O Space):**
The space complexity of the program is determined by the additional data structures used:
1. Integer variable 'sums': This variable stores the sum of all elements in the input array. It requires O(1) space.
2. Boolean array 'dp': This 2D array has dimensions (n+1) x (sums/2+1). In the worst case, the size of 'dp' is proportional to 'n' and the sum of all elements in the input array. Therefore, the space complexity due to 'dp' is O(n * sums).
3. Various integer variables used for iteration and intermediate calculations: These variables require constant space, O(1).
Combining these factors, the dominant factor in the space complexity is the 'dp' array, which can grow to O(n * sums) in size in the worst case. Therefore, the space complexity of the program is O(n * sums).
In summary, the provided program has a time complexity of O(n * sums) and a space complexity of O(n * sums), where 'n' is the number of elements in the input array, and 'sums' is the sum of all elements.