Skip to content

Commit d21e0ea

Browse files
authored
Added tasks 3360-3373
1 parent 26c318e commit d21e0ea

File tree

39 files changed

+1386
-213
lines changed
  • src/main/java
    • g0201_0300/s0282_expression_add_operators
    • g0301_0400/s0400_nth_digit
    • g0401_0500/s0419_battleships_in_a_board
    • g0801_0900/s0880_decoded_string_at_index
    • g1001_1100/s1009_complement_of_base_10_integer
    • g1101_1200/s1195_fizz_buzz_multithreaded
    • g1201_1300/s1286_iterator_for_combination
    • g1301_1400/s1354_construct_target_array_with_multiple_sums
    • g1501_1600/s1519_number_of_nodes_in_the_sub_tree_with_the_same_label
    • g1601_1700
      • s1648_sell_diminishing_valued_colored_balls
      • s1663_smallest_string_with_a_given_numeric_value
    • g1701_1800/s1703_minimum_adjacent_swaps_for_k_consecutive_ones
    • g1801_1900/s1893_check_if_all_the_integers_in_a_range_are_covered
    • g1901_2000/s1916_count_ways_to_build_rooms_in_an_ant_colony
    • g2001_2100/s2090_k_radius_subarray_averages
    • g2101_2200/s2104_sum_of_subarray_ranges
    • g2201_2300
    • g2301_2400
      • s2333_minimum_sum_of_squared_difference
      • s2342_max_sum_of_a_pair_with_equal_sum_of_digits
    • g2401_2500/s2409_count_days_spent_together
    • g2501_2600/s2528_maximize_the_minimum_powered_city
    • g2901_3000/s2930_number_of_strings_which_can_be_rearranged_to_contain_substring
    • g3101_3200/s3186_maximum_total_damage_with_spell_casting
    • g3301_3400
      • s3360_stone_removal_game
      • s3361_shift_distance_between_two_strings
      • s3362_zero_array_transformation_iii
      • s3363_find_the_maximum_number_of_fruits_collected
      • s3364_minimum_positive_sum_subarray
      • s3365_rearrange_k_substrings_to_form_target_string
      • s3366_minimum_array_sum
      • s3367_maximize_sum_of_weights_after_edge_removals
      • s3370_smallest_number_with_all_set_bits
      • s3371_identify_the_largest_outlier_in_an_array
      • s3372_maximize_the_number_of_target_nodes_after_connecting_trees_i
      • s3373_maximize_the_number_of_target_nodes_after_connecting_trees_ii

39 files changed

+1386
-213
lines changed

README.md

Lines changed: 171 additions & 159 deletions
Large diffs are not rendered by default.

src/main/java/g0201_0300/s0282_expression_add_operators/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ import java.util.List;
7171
public class Solution {
7272
public List<String> addOperators(String num, int target) {
7373
List<String> res = new ArrayList<>();
74-
if (num.length() == 0 || Long.valueOf(num) > Integer.MAX_VALUE) {
74+
if (num.length() == 0 || Long.parseLong(num) > Integer.MAX_VALUE) {
7575
return res;
7676
}
7777
char[] list = num.toCharArray();

src/main/java/g0301_0400/s0400_nth_digit/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public class Solution {
3939
long count = 9;
4040
int start = 1;
4141
while (n > len * count) {
42-
n -= len * count;
42+
n -= (int) (len * count);
4343
len += 1;
4444
count *= 10;
4545
start *= 10;

src/main/java/g0401_0500/s0419_battleships_in_a_board/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class Solution {
4646
for (int i = 0; i < m; i++) {
4747
for (int j = 0; j < n; j++) {
4848
if (board[i][j] != '.'
49-
&& (j <= 0 || board[i][j - 1] != 'X')
49+
&& (j == 0 || board[i][j - 1] != 'X')
5050
&& (i <= 0 || board[i - 1][j] != 'X')) {
5151
count++;
5252
}

src/main/java/g0801_0900/s0880_decoded_string_at_index/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public class Solution {
6161
}
6262
for (int i = s.length() - 1; i >= 0; i--) {
6363
char c = s.charAt(i);
64-
k %= length;
64+
k %= (int) length;
6565
if (c >= 48 && c <= 57) {
6666
length /= c - '0';
6767
} else if (k == 0) {

src/main/java/g1001_1100/s1009_complement_of_base_10_integer/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public class Solution {
6161
int exp = list.size() - 1;
6262
for (int i = list.size() - 1; i >= 0; i--) {
6363
if (list.get(i) == 0) {
64-
result += Math.pow(2, exp);
64+
result += (int) Math.pow(2, exp);
6565
}
6666
exp--;
6767
}

src/main/java/g1101_1200/s1195_fizz_buzz_multithreaded/readme.md

Lines changed: 38 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -53,60 +53,74 @@ Implement the `FizzBuzz` class:
5353
## Solution
5454

5555
```java
56-
import java.util.concurrent.atomic.AtomicInteger;
5756
import java.util.function.IntConsumer;
5857

5958
@SuppressWarnings("java:S1130")
6059
public class FizzBuzz {
61-
private final AtomicInteger count = new AtomicInteger(1);
62-
6360
private final int n;
61+
private int current;
6462

6563
public FizzBuzz(int n) {
6664
this.n = n;
65+
this.current = 1;
6766
}
6867

6968
// printFizz.run() outputs "fizz".
7069
public void fizz(Runnable printFizz) throws InterruptedException {
71-
int i;
72-
while ((i = count.get()) <= n) {
73-
if (i % 3 == 0 && i % 5 != 0) {
74-
printFizz.run();
75-
count.compareAndSet(i, i + 1);
70+
synchronized (this) {
71+
while (current <= n) {
72+
if (current % 3 == 0 && current % 5 != 0) {
73+
printFizz.run();
74+
current += 1;
75+
notifyAll();
76+
} else {
77+
wait();
78+
}
7679
}
7780
}
7881
}
7982

8083
// printBuzz.run() outputs "buzz".
8184
public void buzz(Runnable printBuzz) throws InterruptedException {
82-
int i;
83-
while ((i = count.get()) <= n) {
84-
count.get();
85-
if (i % 5 == 0 && i % 3 != 0) {
86-
printBuzz.run();
87-
count.compareAndSet(i, i + 1);
85+
synchronized (this) {
86+
while (current <= n) {
87+
if (current % 3 != 0 && current % 5 == 0) {
88+
printBuzz.run();
89+
current += 1;
90+
notifyAll();
91+
} else {
92+
wait();
93+
}
8894
}
8995
}
9096
}
9197

9298
// printFizzBuzz.run() outputs "fizzbuzz".
9399
public void fizzbuzz(Runnable printFizzBuzz) throws InterruptedException {
94-
int i;
95-
while ((i = count.get()) <= n) {
96-
if (i % 15 == 0) {
97-
printFizzBuzz.run();
98-
count.compareAndSet(i, i + 1);
100+
synchronized (this) {
101+
while (current <= n) {
102+
if (current % 15 == 0) {
103+
printFizzBuzz.run();
104+
current += 1;
105+
notifyAll();
106+
} else {
107+
wait();
108+
}
99109
}
100110
}
101111
}
102112

103113
// printNumber.accept(x) outputs "x", where x is an integer.
104114
public void number(IntConsumer printNumber) throws InterruptedException {
105-
int i;
106-
while ((i = count.get()) <= n) {
107-
if (i % 5 != 0 && i % 3 != 0) {
108-
printNumber.accept(i);
109-
count.compareAndSet(i, i + 1);
115+
synchronized (this) {
116+
while (current <= n) {
117+
if (current % 3 != 0 && current % 5 != 0) {
118+
printNumber.accept(current);
119+
current += 1;
120+
notifyAll();
121+
} else {
122+
wait();
123+
}
110124
}
111125
}
112126
}

src/main/java/g1201_1300/s1286_iterator_for_combination/readme.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,12 @@ public class CombinationIterator {
3636
private List<String> list;
3737
private int index;
3838
private int combinationLength;
39-
private boolean[] visited;
4039

4140
public CombinationIterator(String characters, int combinationLength) {
4241
this.index = 0;
4342
this.list = new ArrayList<>();
4443
this.combinationLength = combinationLength;
45-
this.visited = new boolean[characters.length()];
44+
boolean[] visited = new boolean[characters.length()];
4645
buildAllCombinations(characters, 0, new StringBuilder(), visited);
4746
}
4847

src/main/java/g1301_1400/s1354_construct_target_array_with_multiple_sums/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public class Solution {
7171
|| target[maxIndex] % remainingSum == 0) {
7272
return false;
7373
}
74-
target[maxIndex] %= remainingSum;
74+
target[maxIndex] %= (int) remainingSum;
7575
return isPossible(target);
7676
}
7777
}

src/main/java/g1501_1600/s1519_number_of_nodes_in_the_sub_tree_with_the_same_label/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ import java.util.ArrayList;
6767
public class Solution {
6868
public int[] countSubTrees(int n, int[][] edges, String labelsString) {
6969
int[] labelsCount = new int[n];
70-
if (n <= 0 || edges == null || labelsString == null) {
70+
if (n == 0 || edges == null || labelsString == null) {
7171
return labelsCount;
7272
}
7373

src/main/java/g1601_1700/s1648_sell_diminishing_valued_colored_balls/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public class Solution {
5555
long diff = i == 0 ? inventory[i] : inventory[i] - inventory[i - 1];
5656
if (count * diff < orders) {
5757
totalValue += (2L * inventory[i] - diff + 1) * diff * count / 2 % mod;
58-
orders -= count * diff;
58+
orders -= (int) (count * diff);
5959
} else {
6060
diff = orders / count;
6161
long remainder = orders % count;

src/main/java/g1601_1700/s1663_smallest_string_with_a_given_numeric_value/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class Solution {
4343
Arrays.fill(res, 'a');
4444
k -= n;
4545
while (k > 0) {
46-
res[--n] += Math.min(25, k);
46+
res[--n] += (char) Math.min(25, k);
4747
k -= Math.min(25, k);
4848
}
4949
return String.valueOf(res);

src/main/java/g1701_1800/s1703_minimum_adjacent_swaps_for_k_consecutive_ones/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public class Solution {
7171
int mid = l + (h - l) / 2;
7272
int k = h - l + 1;
7373
int radius = mid - l;
74-
long res = sum[h + 1] - sum[mid + 1] - (sum[mid] - sum[l]) - (1 + radius) * radius;
74+
long res = sum[h + 1] - sum[mid + 1] - (sum[mid] - sum[l]) - (long) (1 + radius) * radius;
7575
if (k % 2 == 0) {
7676
res = res - arr[mid] - (radius + 1);
7777
}

src/main/java/g1801_1900/s1893_check_if_all_the_integers_in_a_range_are_covered/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public class Solution {
4949
int start = range[0];
5050
int end = range[ranges[0].length - 1];
5151
temp[start] += 1;
52-
temp[end + 1] += -1;
52+
temp[end + 1] -= 1;
5353
}
5454
for (int i = 1; i < temp.length; i++) {
5555
temp[i] += temp[i - 1];

src/main/java/g1901_2000/s1916_count_ways_to_build_rooms_in_an_ant_colony/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public class Solution {
9797
long com = 1;
9898
for (long[] p : list) {
9999
long choose = c(cnt, (int) (p[0]));
100-
cnt -= p[0];
100+
cnt -= (int) p[0];
101101
com = com * choose;
102102
com %= MOD;
103103
com = com * p[1];

src/main/java/g2001_2100/s2090_k_radius_subarray_averages/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public class Solution {
8080
return res;
8181
}
8282
long sum = 0;
83-
long range = 2 * k + 1L;
83+
long range = 2L * k + 1L;
8484
// take sum of all elements from 0 to k*2 index
8585
for (int i = 0; i <= 2 * k; ++i) {
8686
sum += nums[i];

src/main/java/g2101_2200/s2104_sum_of_subarray_ranges/readme.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public class Solution {
8888
int cur = q.removeLast();
8989
int left = q.peekLast();
9090
int right = i;
91-
sum += 1L * (cur - left) * (right - cur) * nums[cur];
91+
sum += (long) (cur - left) * (right - cur) * nums[cur];
9292
}
9393
q.add(i);
9494
}
@@ -100,7 +100,7 @@ public class Solution {
100100
int cur = q.removeLast();
101101
int left = q.peekLast();
102102
int right = i;
103-
sum -= 1L * (cur - left) * (right - cur) * nums[cur];
103+
sum -= (long) (cur - left) * (right - cur) * nums[cur];
104104
}
105105
q.add(i);
106106
}

src/main/java/g2201_2300/s2231_largest_number_after_digit_swaps_by_parity/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public class Solution {
7272
str[i] = temp;
7373
str[swapIndex] = tempStr;
7474
}
75-
return Integer.valueOf(new String(str));
75+
return Integer.parseInt(new String(str));
7676
}
7777
}
7878
```

src/main/java/g2201_2300/s2241_design_an_atm_machine/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public class ATM {
9090
return new int[] {-1};
9191
}
9292
for (int i = 0; i < 5; i++) {
93-
counts[i] += -delivery[i];
93+
counts[i] -= delivery[i];
9494
}
9595
return delivery;
9696
}

src/main/java/g2201_2300/s2262_total_appeal_of_a_string/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public class Solution {
6969
long res = 0;
7070
for (int i = 0; i < len; i++) {
7171
int idx = s.charAt(i) - 'a';
72-
res += (i - lastPos[idx]) * (len - i);
72+
res += (long) (i - lastPos[idx]) * (len - i);
7373
lastPos[idx] = i;
7474
}
7575
return res;

src/main/java/g2201_2300/s2288_apply_discount_to_prices/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public class Solution {
7777
return s;
7878
}
7979
price *= 10;
80-
price += (s.charAt(i) - '0') * (100 - discount);
80+
price += (long) (s.charAt(i) - '0') * (100 - discount);
8181
}
8282
String stringPrice = String.valueOf(price);
8383
if (price < 10) {

src/main/java/g2301_2400/s2333_minimum_sum_of_squared_difference/readme.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ public class Solution {
8181
// if current group has more differences than the totalK, we can only move k of them
8282
// to the lower level.
8383
if (diffs[i] >= kSum) {
84-
diffs[i] -= kSum;
85-
diffs[i - 1] += kSum;
84+
diffs[i] -= (int) kSum;
85+
diffs[i - 1] += (int) kSum;
8686
kSum = 0;
8787
} else {
8888
// else, we can make this whole group one level lower.

src/main/java/g2301_2400/s2342_max_sum_of_a_pair_with_equal_sum_of_digits/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public class Solution {
4949
for (int num : nums) {
5050
int s = 0;
5151
for (char digit : String.valueOf(num).toCharArray()) {
52-
s += Integer.valueOf(digit - '0');
52+
s += digit - '0';
5353
}
5454
if (!map.containsKey(s)) {
5555
map.put(s, num);

src/main/java/g2401_2500/s2409_count_days_spent_together/readme.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,14 @@ public class Solution {
5454
Integer endMonth = Integer.valueOf(ends[0]);
5555
int res = 0;
5656
if (startMonth.equals(endMonth)) {
57-
res += (Integer.valueOf(ends[1]) - Integer.valueOf(starts[1]) + 1);
57+
res += (Integer.parseInt(ends[1]) - Integer.parseInt(starts[1]) + 1);
5858
return res;
5959
}
6060
for (int i = startMonth; i <= endMonth; i++) {
6161
if (i == endMonth) {
62-
res += Integer.valueOf(ends[1]);
62+
res += Integer.parseInt(ends[1]);
6363
} else if (i == startMonth) {
64-
res += dates[i] - Integer.valueOf(starts[1]) + 1;
64+
res += dates[i] - Integer.parseInt(starts[1]) + 1;
6565
} else {
6666
res += dates[i];
6767
}

src/main/java/g2501_2600/s2528_maximize_the_minimum_powered_city/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public class Solution {
8080
if (req > k) {
8181
return false;
8282
}
83-
k -= req;
83+
k -= (int) req;
8484
extraPower[i] += (req);
8585
if (i + 2 * r + 1 < n) {
8686
extraPower[i + 2 * r + 1] -= (req);

src/main/java/g2901_3000/s2930_number_of_strings_which_can_be_rearranged_to_contain_substring/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public class Solution {
6060
public int stringCount(int n) {
6161
long mod = (int) 1e9 + 7L;
6262
return (int)
63-
(((+pow(26, n, mod)
63+
(((pow(26, n, mod)
6464
- (n + 75) * pow(25, n - 1L, mod)
6565
+ (2 * n + 72) * pow(24, n - 1L, mod)
6666
- (n + 23) * pow(23, n - 1L, mod))

src/main/java/g3101_3200/s3186_maximum_total_damage_with_spell_casting/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public class Solution {
6565
dp[1] = counts[1];
6666
dp[2] = Math.max(counts[2] * 2L, dp[1]);
6767
for (int i = 3; i <= maxPower; i++) {
68-
dp[i] = Math.max(counts[i] * i + dp[i - 3], Math.max(dp[i - 1], dp[i - 2]));
68+
dp[i] = Math.max((long) counts[i] * i + dp[i - 3], Math.max(dp[i - 1], dp[i - 2]));
6969
}
7070
return dp[maxPower];
7171
}

0 commit comments

Comments
 (0)