Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /