Skip to content

Commit e937666

Browse files
authored
Improved task 2126.
1 parent 36818a5 commit e937666

File tree

2 files changed

+33
-11
lines changed

2 files changed

+33
-11
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1417,7 +1417,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.10'
14171417
| 2130 |[Maximum Twin Sum of a Linked List](src/main/java/g2101_2200/s2130_maximum_twin_sum_of_a_linked_list/Solution.java)| Medium | Two_Pointers, Stack, Linked_List | 9 | 57.92
14181418
| 2129 |[Capitalize the Title](src/main/java/g2101_2200/s2129_capitalize_the_title/Solution.java)| Easy | String | 2 | 94.22
14191419
| 2127 |[Maximum Employees to Be Invited to a Meeting](src/main/java/g2101_2200/s2127_maximum_employees_to_be_invited_to_a_meeting/Solution.java)| Hard | Depth_First_Search, Graph, Topological_Sort | 37 | 85.71
1420-
| 2126 |[Destroying Asteroids](src/main/java/g2101_2200/s2126_destroying_asteroids/Solution.java)| Medium | Array, Sorting, Greedy | 25 | 83.82
1420+
| 2126 |[Destroying Asteroids](src/main/java/g2101_2200/s2126_destroying_asteroids/Solution.java)| Medium | Array, Sorting, Greedy | 6 | 99.27
14211421
| 2125 |[Number of Laser Beams in a Bank](src/main/java/g2101_2200/s2125_number_of_laser_beams_in_a_bank/Solution.java)| Medium | Array, String, Math, Matrix | 19 | 76.00
14221422
| 2124 |[Check if All A's Appears Before All B's](src/main/java/g2101_2200/s2124_check_if_all_as_appears_before_all_bs/Solution.java)| Easy | String | 1 | 73.82
14231423
| 2122 |[Recover the Original Array](src/main/java/g2101_2200/s2122_recover_the_original_array/Solution.java)| Hard | Array, Hash_Table, Sorting, Enumeration | 19 | 89.04
Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,41 @@
11
package g2101_2200.s2126_destroying_asteroids;
22

3-
// #Medium #Array #Sorting #Greedy #2022_06_03_Time_25_ms_(83.82%)_Space_54.6_MB_(93.38%)
4-
5-
import java.util.Arrays;
3+
// #Medium #Array #Sorting #Greedy #2022_06_08_Time_6_ms_(99.27%)_Space_54.1_MB_(97.81%)
64

75
public class Solution {
86
public boolean asteroidsDestroyed(int mass, int[] asteroids) {
9-
Arrays.sort(asteroids);
10-
long m = mass;
11-
for (int ele : asteroids) {
12-
if (m < ele) {
13-
return false;
7+
return helper(mass, 0, asteroids);
8+
}
9+
10+
private boolean helper(long mass, int startIndex, int[] asteroids) {
11+
int smallOrEqualIndex = partition(mass, startIndex, asteroids);
12+
if (smallOrEqualIndex < startIndex) {
13+
return false;
14+
}
15+
if (smallOrEqualIndex >= asteroids.length - 1) {
16+
return true;
17+
}
18+
for (int i = startIndex; i <= smallOrEqualIndex; ++i) {
19+
mass += asteroids[i];
20+
}
21+
return helper(mass, ++smallOrEqualIndex, asteroids);
22+
}
23+
24+
private int partition(long mass, int startIndex, int[] asteroids) {
25+
int length = asteroids.length;
26+
int smallOrEqualIndex = startIndex - 1;
27+
for (int i = startIndex; i < length; ++i) {
28+
if (asteroids[i] <= mass) {
29+
smallOrEqualIndex++;
30+
swap(asteroids, i, smallOrEqualIndex);
1431
}
15-
m += ele;
1632
}
17-
return true;
33+
return smallOrEqualIndex;
34+
}
35+
36+
private void swap(int[] array, int i, int j) {
37+
int tmp = array[i];
38+
array[i] = array[j];
39+
array[j] = tmp;
1840
}
1941
}

0 commit comments

Comments
 (0)