Skip to content

Commit 64e2bfa

Browse files
authored
Improved task 416.
1 parent 57dfb05 commit 64e2bfa

File tree

2 files changed

+17
-29
lines changed

2 files changed

+17
-29
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -829,7 +829,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.17'
829829

830830
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
831831
|-|-|-|-|-|-
832-
| 0416 |[Partition Equal Subset Sum](src/main/java/g0401_0500/s0416_partition_equal_subset_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming | 2 | 99.96
832+
| 0416 |[Partition Equal Subset Sum](src/main/java/g0401_0500/s0416_partition_equal_subset_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming | 27 | 94.53
833833
| 0152 |[Maximum Product Subarray](src/main/java/g0101_0200/s0152_maximum_product_subarray/Solution.java)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming | 0 | 100.00
834834

835835
#### Day 14 Sliding Window/Two Pointer
@@ -1850,7 +1850,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.17'
18501850
|------|----------------|-------------|-------------|----------|---------
18511851
| 2461 |[Maximum Sum of Distinct Subarrays With Length K](src/main/java/g2401_2500/s2461_maximum_sum_of_distinct_subarrays_with_length_k/Solution.java)| Medium | Array, Hash_Table, Sliding_Window | 40 | 93.40
18521852
| 2460 |[Apply Operations to an Array](src/main/java/g2401_2500/s2460_apply_operations_to_an_array/Solution.java)| Easy | Array, Simulation | 1 | 87.93
1853-
| 2458 |[Height of Binary Tree After Subtree Removal Queries](src/main/java/g2401_2500/s2458_height_of_binary_tree_after_subtree_removal_queries/Solution.java)| Hard | Array, Tree, Binary_Tree, Depth_First_Search, Breadth_First_Search | 52 | 87.45
1853+
| 2458 |[Height of Binary Tree After Subtree Removal Queries](src/main/java/g2401_2500/s2458_height_of_binary_tree_after_subtree_removal_queries/Solution.java)| Hard | Array, Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 52 | 87.45
18541854
| 2457 |[Minimum Addition to Make Integer Beautiful](src/main/java/g2401_2500/s2457_minimum_addition_to_make_integer_beautiful/Solution.java)| Medium | Math, Greedy | 0 | 100.00
18551855
| 2456 |[Most Popular Video Creator](src/main/java/g2401_2500/s2456_most_popular_video_creator/Solution.java)| Medium | Array, String, Hash_Table, Sorting, Heap_Priority_Queue | 57 | 97.10
18561856
| 2455 |[Average Value of Even Numbers That Are Divisible by Three](src/main/java/g2401_2500/s2455_average_value_of_even_numbers_that_are_divisible_by_three/Solution.java)| Easy | Array, Math | 1 | 100.00
@@ -3451,7 +3451,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.17'
34513451
| 0420 |[Strong Password Checker](src/main/java/g0401_0500/s0420_strong_password_checker/Solution.java)| Hard | String, Greedy, Heap_Priority_Queue | 0 | 100.00
34523452
| 0419 |[Battleships in a Board](src/main/java/g0401_0500/s0419_battleships_in_a_board/Solution.java)| Medium | Array, Depth_First_Search, Matrix | 0 | 100.00
34533453
| 0417 |[Pacific Atlantic Water Flow](src/main/java/g0401_0500/s0417_pacific_atlantic_water_flow/Solution.java)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix, Graph_Theory_I_Day_4_Matrix_Related_Problems, Level_2_Day_10_Graph/BFS/DFS, Udemy_Graph | 5 | 92.62
3454-
| 0416 |[Partition Equal Subset Sum](src/main/java/g0401_0500/s0416_partition_equal_subset_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Level_2_Day_13_Dynamic_Programming | 2 | 99.96
3454+
| 0416 |[Partition Equal Subset Sum](src/main/java/g0401_0500/s0416_partition_equal_subset_sum/Solution.java)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Level_2_Day_13_Dynamic_Programming | 27 | 94.53
34553455
| 0415 |[Add Strings](src/main/java/g0401_0500/s0415_add_strings/Solution.java)| Easy | String, Math, Simulation, Data_Structure_II_Day_6_String | 3 | 82.41
34563456
| 0414 |[Third Maximum Number](src/main/java/g0401_0500/s0414_third_maximum_number/Solution.java)| Easy | Array, Sorting | 1 | 97.59
34573457
| 0413 |[Arithmetic Slices](src/main/java/g0401_0500/s0413_arithmetic_slices/Solution.java)| Medium | Array, Dynamic_Programming, Algorithm_II_Day_14_Dynamic_Programming, Dynamic_Programming_I_Day_10 | 0 | 100.00
Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,27 @@
11
package g0401_0500.s0416_partition_equal_subset_sum;
22

33
// #Medium #Top_100_Liked_Questions #Array #Dynamic_Programming #Level_2_Day_13_Dynamic_Programming
4-
// #2022_07_16_Time_2_ms_(99.96%)_Space_42.3_MB_(90.38%)
4+
// #2022_12_29_Time_27_ms_(94.53%)_Space_41.8_MB_(95.29%)
55

66
public class Solution {
77
public boolean canPartition(int[] nums) {
8-
int sum = 0;
8+
int sums = 0;
99
for (int num : nums) {
10-
sum = sum + num;
10+
sums += num;
1111
}
12-
if (sum % 2 != 0) {
12+
// odd
13+
if ((sums % 2) == 1) {
1314
return false;
1415
}
15-
sum = sum / 2;
16-
// if use primitive boolean array will make default value to false
17-
// we need the default value "null" to help us to do the memo
18-
Boolean[] dp = new Boolean[sum + 1];
19-
return sumTo(nums, sum, 0, dp);
20-
}
21-
22-
private boolean sumTo(int[] nums, int sum, int index, Boolean[] dp) {
23-
if (sum == 0) {
24-
return true;
25-
}
26-
if (sum < 0) {
27-
return false;
28-
}
29-
if (index == nums.length) {
30-
return false;
31-
}
32-
if (dp[sum] != null) {
33-
return dp[sum];
16+
sums /= 2;
17+
int n = nums.length;
18+
boolean[] dp = new boolean[sums + 1];
19+
dp[0] = true;
20+
for (int num : nums) {
21+
for (int sum = sums; sum >= num; sum--) {
22+
dp[sum] = dp[sum] || dp[sum - num];
23+
}
3424
}
35-
// use the number or not use the number
36-
dp[sum] = sumTo(nums, sum - nums[index], index + 1, dp) || sumTo(nums, sum, index + 1, dp);
37-
return dp[sum];
25+
return dp[sums];
3826
}
3927
}

0 commit comments

Comments
 (0)