Skip to content

Commit 3b906d2

Browse files
authored
feat: add Java solutions to lc problems: No.2873~2876 (doocs#1736)
1 parent bc4695b commit 3b906d2

File tree

12 files changed

+327
-0
lines changed

12 files changed

+327
-0
lines changed

solution/2800-2899/2873.Maximum Value of an Ordered Triplet I/README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,20 @@
6868
<!-- 这里可写当前语言的特殊实现逻辑 -->
6969

7070
```java
71+
class Solution {
72+
public long maximumTripletValue(int[] nums) {
73+
long max, maxDiff, ans;
74+
max = 0;
75+
maxDiff = 0;
76+
ans = 0;
77+
for (int num : nums) {
78+
ans = Math.max(ans, num * maxDiff);
79+
max = Math.max(max, num);
80+
maxDiff = Math.max(maxDiff, max - num);
81+
}
82+
return ans;
83+
}
84+
}
7185

7286
```
7387

solution/2800-2899/2873.Maximum Value of an Ordered Triplet I/README_EN.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,20 @@ It can be shown that there are no ordered triplets of indices with a value great
5858
### **Java**
5959

6060
```java
61+
class Solution {
62+
public long maximumTripletValue(int[] nums) {
63+
long max, maxDiff, ans;
64+
max = 0;
65+
maxDiff = 0;
66+
ans = 0;
67+
for (int num : nums) {
68+
ans = Math.max(ans, num * maxDiff);
69+
max = Math.max(max, num);
70+
maxDiff = Math.max(maxDiff, max - num);
71+
}
72+
return ans;
73+
}
74+
}
6175

6276
```
6377

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public long maximumTripletValue(int[] nums) {
3+
long max, maxDiff, ans;
4+
max = 0;
5+
maxDiff = 0;
6+
ans = 0;
7+
for (int num : nums) {
8+
ans = Math.max(ans, num * maxDiff);
9+
max = Math.max(max, num);
10+
maxDiff = Math.max(maxDiff, max - num);
11+
}
12+
return ans;
13+
}
14+
}

solution/2800-2899/2874.Maximum Value of an Ordered Triplet II/README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,20 @@
6868
<!-- 这里可写当前语言的特殊实现逻辑 -->
6969

7070
```java
71+
class Solution {
72+
public long maximumTripletValue(int[] nums) {
73+
long max, maxDiff, ans;
74+
max = 0;
75+
maxDiff = 0;
76+
ans = 0;
77+
for (int num : nums) {
78+
ans = Math.max(ans, num * maxDiff);
79+
max = Math.max(max, num);
80+
maxDiff = Math.max(maxDiff, max - num);
81+
}
82+
return ans;
83+
}
84+
}
7185

7286
```
7387

solution/2800-2899/2874.Maximum Value of an Ordered Triplet II/README_EN.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,20 @@ It can be shown that there are no ordered triplets of indices with a value great
5858
### **Java**
5959

6060
```java
61+
class Solution {
62+
public long maximumTripletValue(int[] nums) {
63+
long max, maxDiff, ans;
64+
max = 0;
65+
maxDiff = 0;
66+
ans = 0;
67+
for (int num : nums) {
68+
ans = Math.max(ans, num * maxDiff);
69+
max = Math.max(max, num);
70+
maxDiff = Math.max(maxDiff, max - num);
71+
}
72+
return ans;
73+
}
74+
}
6175

6276
```
6377

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public long maximumTripletValue(int[] nums) {
3+
long max, maxDiff, ans;
4+
max = 0;
5+
maxDiff = 0;
6+
ans = 0;
7+
for (int num : nums) {
8+
ans = Math.max(ans, num * maxDiff);
9+
max = Math.max(max, num);
10+
maxDiff = Math.max(maxDiff, max - num);
11+
}
12+
return ans;
13+
}
14+
}

solution/2800-2899/2875.Minimum Size Subarray in Infinite Array/README.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,51 @@
7171
<!-- 这里可写当前语言的特殊实现逻辑 -->
7272

7373
```java
74+
class Solution {
75+
public int shortestSubarray(int[] nums, int k) {
76+
int n = nums.length;
77+
78+
int minLength = n * 2 + 1;
79+
int l = 0;
80+
int sum = 0;
81+
82+
for (int r = 0; r < n * 2; r++) {
83+
int start = l % n;
84+
int end = r % n;
85+
sum += nums[end];
86+
87+
while (sum > k && l <= r) {
88+
start = l % n;
89+
sum -= nums[start];
90+
l++;
91+
}
92+
93+
if (sum == k) {
94+
minLength = Math.min(minLength, r - l + 1);
95+
start = l % n;
96+
sum -= nums[start];
97+
l++;
98+
}
99+
}
100+
101+
return minLength == n * 2 + 1 ? -1 : minLength;
102+
}
103+
public int minSizeSubarray(int[] nums, int target) {
104+
int n = nums.length;
105+
int sum = 0;
106+
107+
for (int num : nums) {
108+
sum += num;
109+
}
110+
int k = target % sum;
111+
int ans = target / sum * n;
112+
if (k == 0) {
113+
return ans;
114+
}
115+
int res = shortestSubarray(nums, k);
116+
return res == -1 ? -1 : ans + res;
117+
}
118+
}
74119

75120
```
76121

solution/2800-2899/2875.Minimum Size Subarray in Infinite Array/README_EN.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,51 @@ It can be proven that there is no subarray with sum equal to target = 3.
6262
### **Java**
6363

6464
```java
65+
class Solution {
66+
public int shortestSubarray(int[] nums, int k) {
67+
int n = nums.length;
68+
69+
int minLength = n * 2 + 1;
70+
int l = 0;
71+
int sum = 0;
72+
73+
for (int r = 0; r < n * 2; r++) {
74+
int start = l % n;
75+
int end = r % n;
76+
sum += nums[end];
77+
78+
while (sum > k && l <= r) {
79+
start = l % n;
80+
sum -= nums[start];
81+
l++;
82+
}
83+
84+
if (sum == k) {
85+
minLength = Math.min(minLength, r - l + 1);
86+
start = l % n;
87+
sum -= nums[start];
88+
l++;
89+
}
90+
}
91+
92+
return minLength == n * 2 + 1 ? -1 : minLength;
93+
}
94+
public int minSizeSubarray(int[] nums, int target) {
95+
int n = nums.length;
96+
int sum = 0;
97+
98+
for (int num : nums) {
99+
sum += num;
100+
}
101+
int k = target % sum;
102+
int ans = target / sum * n;
103+
if (k == 0) {
104+
return ans;
105+
}
106+
int res = shortestSubarray(nums, k);
107+
return res == -1 ? -1 : ans + res;
108+
}
109+
}
65110

66111
```
67112

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
class Solution {
2+
public int shortestSubarray(int[] nums, int k) {
3+
int n = nums.length;
4+
int minLength = n * 2 + 1;
5+
int l = 0;
6+
int sum = 0;
7+
8+
for (int r = 0; r < n * 2; r++) {
9+
int start = l % n;
10+
int end = r % n;
11+
sum += nums[end];
12+
13+
while (sum > k && l <= r) {
14+
start = l % n;
15+
sum -= nums[start];
16+
l++;
17+
}
18+
19+
if (sum == k) {
20+
minLength = Math.min(minLength, r - l + 1);
21+
start = l % n;
22+
sum -= nums[start];
23+
l++;
24+
}
25+
}
26+
27+
return minLength == n * 2 + 1 ? -1 : minLength;
28+
}
29+
30+
public int minSizeSubarray(int[] nums, int target) {
31+
int n = nums.length;
32+
int sum = 0;
33+
34+
for (int num : nums) {
35+
sum += num;
36+
}
37+
int k = target % sum;
38+
int ans = target / sum * n;
39+
if (k == 0) {
40+
return ans;
41+
}
42+
int res = shortestSubarray(nums, k);
43+
return res == -1 ? -1 : ans + res;
44+
}
45+
}

solution/2800-2899/2876.Count Visited Nodes in a Directed Graph/README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,42 @@
7070
<!-- 这里可写当前语言的特殊实现逻辑 -->
7171

7272
```java
73+
class Solution {
74+
void dfs(int curr, List<Integer> edges, int[] ans) {
75+
76+
List<Integer> path = new ArrayList<>();
77+
int prev = -1;
78+
while (ans[curr] == 0) {
79+
path.add(curr);
80+
ans[curr] = prev == -1 ? -1 : ans[prev] - 1;
81+
prev = curr;
82+
curr = edges.get(curr);
83+
}
84+
int idx = path.size() - 1;
85+
if (ans[curr] < 0) {
86+
int cycle = ans[curr] - ans[path.get(idx)] + 1;
87+
int start = ans[curr];
88+
for (; idx >= 0 && ans[path.get(idx)] <= start; idx--) {
89+
ans[path.get(idx)] = cycle;
90+
}
91+
}
92+
for (; idx >= 0; idx--) {
93+
ans[path.get(idx)] = ans[edges.get(path.get(idx))] + 1;
94+
}
95+
}
96+
97+
public int[] countVisitedNodes(List<Integer> edges) {
98+
int n = edges.size();
99+
int[] ans = new int[n];
100+
for (int i = 0; i < n; i++) {
101+
if (ans[i] > 0) {
102+
continue;
103+
}
104+
dfs(i, edges, ans);
105+
}
106+
return ans;
107+
}
108+
}
73109

74110
```
75111

0 commit comments

Comments
 (0)