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 c9cd048

Browse files
feat: add solutions to lc problems: No.2012,2598 (#4111)
1 parent ad0ff4f commit c9cd048

File tree

8 files changed

+142
-14
lines changed

8 files changed

+142
-14
lines changed

‎solution/2000-2099/2012.Sum of Beauty in the Array/README.md‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,33 @@ function sumOfBeauties(nums: number[]): number {
202202
}
203203
```
204204

205+
#### Rust
206+
207+
```rust
208+
impl Solution {
209+
pub fn sum_of_beauties(nums: Vec<i32>) -> i32 {
210+
let n = nums.len();
211+
let mut right: Vec<i32> = vec![0; n];
212+
right[n - 1] = nums[n - 1];
213+
for i in (1..n - 1).rev() {
214+
right[i] = right[i + 1].min(nums[i]);
215+
}
216+
let mut ans = 0;
217+
let mut l = nums[0];
218+
for i in 1..n - 1 {
219+
let r = right[i + 1];
220+
if l < nums[i] && nums[i] < r {
221+
ans += 2;
222+
} else if nums[i - 1] < nums[i] && nums[i] < nums[i + 1] {
223+
ans += 1;
224+
}
225+
l = l.max(nums[i]);
226+
}
227+
ans
228+
}
229+
}
230+
```
231+
205232
<!-- tabs:end -->
206233

207234
<!-- solution:end -->

‎solution/2000-2099/2012.Sum of Beauty in the Array/README_EN.md‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,33 @@ function sumOfBeauties(nums: number[]): number {
203203
}
204204
```
205205

206+
#### Rust
207+
208+
```rust
209+
impl Solution {
210+
pub fn sum_of_beauties(nums: Vec<i32>) -> i32 {
211+
let n = nums.len();
212+
let mut right: Vec<i32> = vec![0; n];
213+
right[n - 1] = nums[n - 1];
214+
for i in (1..n - 1).rev() {
215+
right[i] = right[i + 1].min(nums[i]);
216+
}
217+
let mut ans = 0;
218+
let mut l = nums[0];
219+
for i in 1..n - 1 {
220+
let r = right[i + 1];
221+
if l < nums[i] && nums[i] < r {
222+
ans += 2;
223+
} else if nums[i - 1] < nums[i] && nums[i] < nums[i + 1] {
224+
ans += 1;
225+
}
226+
l = l.max(nums[i]);
227+
}
228+
ans
229+
}
230+
}
231+
```
232+
206233
<!-- tabs:end -->
207234

208235
<!-- solution:end -->
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
impl Solution {
2+
pub fn sum_of_beauties(nums: Vec<i32>) -> i32 {
3+
let n = nums.len();
4+
let mut right: Vec<i32> = vec![0; n];
5+
right[n - 1] = nums[n - 1];
6+
for i in (1..n - 1).rev() {
7+
right[i] = right[i + 1].min(nums[i]);
8+
}
9+
let mut ans = 0;
10+
let mut l = nums[0];
11+
for i in 1..n - 1 {
12+
let r = right[i + 1];
13+
if l < nums[i] && nums[i] < r {
14+
ans += 2;
15+
} else if nums[i - 1] < nums[i] && nums[i] < nums[i + 1] {
16+
ans += 1;
17+
}
18+
l = l.max(nums[i]);
19+
}
20+
ans
21+
}
22+
}

‎solution/2500-2599/2588.Count the Number of Beautiful Subarrays/README.md‎

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,7 @@ class Solution {
114114
int mask = 0;
115115
for (int x : nums) {
116116
mask ^= x;
117-
ans += cnt.getOrDefault(mask, 0);
118-
cnt.merge(mask, 1, Integer::sum);
117+
ans += cnt.merge(mask, 1, Integer::sum) - 1;
119118
}
120119
return ans;
121120
}
@@ -133,8 +132,7 @@ public:
133132
int mask = 0;
134133
for (int x : nums) {
135134
mask ^= x;
136-
ans += cnt[mask];
137-
++cnt[mask];
135+
ans += cnt[mask]++;
138136
}
139137
return ans;
140138
}
@@ -173,6 +171,27 @@ function beautifulSubarrays(nums: number[]): number {
173171
}
174172
```
175173

174+
#### Rust
175+
176+
```rust
177+
use std::collections::HashMap;
178+
179+
impl Solution {
180+
pub fn beautiful_subarrays(nums: Vec<i32>) -> i64 {
181+
let mut cnt = HashMap::new();
182+
cnt.insert(0, 1);
183+
let mut ans = 0;
184+
let mut mask = 0;
185+
for &x in nums.iter() {
186+
mask ^= x;
187+
ans += *cnt.get(&mask).unwrap_or(&0);
188+
*cnt.entry(mask).or_insert(0) += 1;
189+
}
190+
ans
191+
}
192+
}
193+
```
194+
176195
<!-- tabs:end -->
177196

178197
<!-- solution:end -->

‎solution/2500-2599/2588.Count the Number of Beautiful Subarrays/README_EN.md‎

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,7 @@ class Solution {
112112
int mask = 0;
113113
for (int x : nums) {
114114
mask ^= x;
115-
ans += cnt.getOrDefault(mask, 0);
116-
cnt.merge(mask, 1, Integer::sum);
115+
ans += cnt.merge(mask, 1, Integer::sum) - 1;
117116
}
118117
return ans;
119118
}
@@ -131,8 +130,7 @@ public:
131130
int mask = 0;
132131
for (int x : nums) {
133132
mask ^= x;
134-
ans += cnt[mask];
135-
++cnt[mask];
133+
ans += cnt[mask]++;
136134
}
137135
return ans;
138136
}
@@ -171,6 +169,27 @@ function beautifulSubarrays(nums: number[]): number {
171169
}
172170
```
173171

172+
#### Rust
173+
174+
```rust
175+
use std::collections::HashMap;
176+
177+
impl Solution {
178+
pub fn beautiful_subarrays(nums: Vec<i32>) -> i64 {
179+
let mut cnt = HashMap::new();
180+
cnt.insert(0, 1);
181+
let mut ans = 0;
182+
let mut mask = 0;
183+
for &x in nums.iter() {
184+
mask ^= x;
185+
ans += *cnt.get(&mask).unwrap_or(&0);
186+
*cnt.entry(mask).or_insert(0) += 1;
187+
}
188+
ans
189+
}
190+
}
191+
```
192+
174193
<!-- tabs:end -->
175194

176195
<!-- solution:end -->

‎solution/2500-2599/2588.Count the Number of Beautiful Subarrays/Solution.cpp‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@ class Solution {
66
int mask = 0;
77
for (int x : nums) {
88
mask ^= x;
9-
ans += cnt[mask];
10-
++cnt[mask];
9+
ans += cnt[mask]++;
1110
}
1211
return ans;
1312
}
14-
};
13+
};

‎solution/2500-2599/2588.Count the Number of Beautiful Subarrays/Solution.java‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@ public long beautifulSubarrays(int[] nums) {
66
int mask = 0;
77
for (int x : nums) {
88
mask ^= x;
9-
ans += cnt.getOrDefault(mask, 0);
10-
cnt.merge(mask, 1, Integer::sum);
9+
ans += cnt.merge(mask, 1, Integer::sum) - 1;
1110
}
1211
return ans;
1312
}
14-
}
13+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
use std::collections::HashMap;
2+
3+
impl Solution {
4+
pub fn beautiful_subarrays(nums: Vec<i32>) -> i64 {
5+
let mut cnt = HashMap::new();
6+
cnt.insert(0, 1);
7+
let mut ans = 0;
8+
let mut mask = 0;
9+
for &x in nums.iter() {
10+
mask ^= x;
11+
ans += *cnt.get(&mask).unwrap_or(&0);
12+
*cnt.entry(mask).or_insert(0) += 1;
13+
}
14+
ans
15+
}
16+
}

0 commit comments

Comments
(0)

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