Skip to content

Commit a151453

Browse files
authored
Improved task 1674.
1 parent 244295b commit a151453

File tree

2 files changed

+15
-17
lines changed

2 files changed

+15
-17
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2394,7 +2394,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.12'
23942394
| 1679 |[Max Number of K-Sum Pairs](src.save/main/java/g1601_1700/s1679_max_number_of_k_sum_pairs/Solution.java)| Medium | Array, Hash_Table, Sorting, Two_Pointers | 20 | 91.22
23952395
| 1678 |[Goal Parser Interpretation](src.save/main/java/g1601_1700/s1678_goal_parser_interpretation/Solution.java)| Easy | String, Programming_Skills_I_Day_8_String | 0 | 100.00
23962396
| 1675 |[Minimize Deviation in Array](src.save/main/java/g1601_1700/s1675_minimize_deviation_in_array/Solution.java)| Hard | Array, Greedy, Heap_Priority_Queue, Ordered_Set | 104 | 88.83
2397-
| 1674 |[Minimum Moves to Make Array Complementary](src.save/main/java/g1601_1700/s1674_minimum_moves_to_make_array_complementary/Solution.java)| Medium | Array, Hash_Table, Prefix_Sum | 29 | 22.22
2397+
| 1674 |[Minimum Moves to Make Array Complementary](src.save/main/java/g1601_1700/s1674_minimum_moves_to_make_array_complementary/Solution.java)| Medium | Array, Hash_Table, Prefix_Sum | 12 | 80.39
23982398
| 1673 |[Find the Most Competitive Subsequence](src.save/main/java/g1601_1700/s1673_find_the_most_competitive_subsequence/Solution.java)| Medium | Array, Greedy, Stack, Monotonic_Stack | 7 | 96.82
23992399
| 1672 |[Richest Customer Wealth](src.save/main/java/g1601_1700/s1672_richest_customer_wealth/Solution.java)| Easy | Array, Matrix, Programming_Skills_I_Day_6_Array | 0 | 100.00
24002400
| 1671 |[Minimum Number of Removals to Make Mountain Array](src.save/main/java/g1601_1700/s1671_minimum_number_of_removals_to_make_mountain_array/Solution.java)| Hard | Array, Dynamic_Programming, Greedy, Binary_Search | 19 | 81.23

src.save/main/java/g1601_1700/s1674_minimum_moves_to_make_array_complementary/Solution.java

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
11
package g1601_1700.s1674_minimum_moves_to_make_array_complementary;
22

3-
// #Medium #Array #Hash_Table #Prefix_Sum #2022_04_19_Time_29_ms_(22.22%)_Space_96.3_MB_(14.29%)
3+
// #Medium #Array #Hash_Table #Prefix_Sum #2022_08_19_Time_12_ms_(80.39%)_Space_82.3_MB_(62.74%)
44

55
public class Solution {
66
public int minMoves(int[] nums, int limit) {
7-
int[] cnt = new int[limit * 2 + 1];
8-
int[] min = new int[limit * 2 + 1];
9-
int[] max = new int[limit * 2 + 2];
7+
int[] delta = new int[2 * limit + 2];
108
int n = nums.length;
11-
int res = Integer.MAX_VALUE;
129
for (int i = 0; i < n / 2; i++) {
13-
cnt[nums[i] + nums[n - i - 1]]++;
14-
min[Math.min(nums[i], nums[n - i - 1])]++;
15-
max[Math.max(nums[i], nums[n - i - 1]) + limit + 1]++;
10+
int a = nums[i];
11+
int b = nums[n - 1 - i];
12+
delta[2] += 2;
13+
delta[Math.min(a, b) + 1]--;
14+
delta[a + b]--;
15+
delta[a + b + 1]++;
16+
delta[Math.max(a, b) + limit + 1]++;
1617
}
17-
for (int i = limit * 2 - 1; i >= 2; i--) {
18-
min[i] += min[i + 1];
19-
}
20-
for (int i = 3; i < limit * 2 + 1; i++) {
21-
max[i] += max[i - 1];
22-
}
23-
for (int i = 2; i < limit * 2 + 1; i++) {
24-
res = Math.min(res, n / 2 - cnt[i] + min[i] + max[i]);
18+
int res = 2 * n;
19+
int curr = 0;
20+
for (int i = 2; i <= 2 * limit; i++) {
21+
curr += delta[i];
22+
res = Math.min(res, curr);
2523
}
2624
return res;
2725
}

0 commit comments

Comments
 (0)