Skip to content

Commit 1f21903

Browse files
committed
feat: add rust solution to lc problems: No.0643,1052
- No.0643.Maximum Average Subarray I - No.1052.Grumpy Bookstore Owner
1 parent 0a36230 commit 1f21903

File tree

6 files changed

+152
-0
lines changed

6 files changed

+152
-0
lines changed

solution/0600-0699/0643.Maximum Average Subarray I/README.md

+18
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,24 @@ function findMaxAverage(nums: number[], k: number): number {
103103
}
104104
```
105105

106+
### **Rust**
107+
108+
```rust
109+
impl Solution {
110+
pub fn find_max_average(nums: Vec<i32>, k: i32) -> f64 {
111+
let k = k as usize;
112+
let n = nums.len();
113+
let mut sum = nums.iter().take(k).sum::<i32>();
114+
let mut max = sum;
115+
for i in k..n {
116+
sum += nums[i] - nums[i - k];
117+
max = max.max(sum);
118+
}
119+
f64::from(max) / f64::from(k as i32)
120+
}
121+
}
122+
```
123+
106124
### **...**
107125

108126
```

solution/0600-0699/0643.Maximum Average Subarray I/README_EN.md

+18
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,24 @@ function findMaxAverage(nums: number[], k: number): number {
9191
}
9292
```
9393

94+
### **Rust**
95+
96+
```rust
97+
impl Solution {
98+
pub fn find_max_average(nums: Vec<i32>, k: i32) -> f64 {
99+
let k = k as usize;
100+
let n = nums.len();
101+
let mut sum = nums.iter().take(k).sum::<i32>();
102+
let mut max = sum;
103+
for i in k..n {
104+
sum += nums[i] - nums[i - k];
105+
max = max.max(sum);
106+
}
107+
f64::from(max) / f64::from(k as i32)
108+
}
109+
}
110+
```
111+
94112
### **...**
95113

96114
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
impl Solution {
2+
pub fn find_max_average(nums: Vec<i32>, k: i32) -> f64 {
3+
let k = k as usize;
4+
let n = nums.len();
5+
let mut sum = nums.iter().take(k).sum::<i32>();
6+
let mut max = sum;
7+
for i in k..n {
8+
sum += nums[i] - nums[i - k];
9+
max = max.max(sum);
10+
}
11+
f64::from(max) / f64::from(k as i32)
12+
}
13+
}

solution/1000-1099/1052.Grumpy Bookstore Owner/README.md

+36
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,42 @@ class Solution {
105105
}
106106
```
107107

108+
### **Rust**
109+
110+
```rust
111+
impl Solution {
112+
pub fn max_satisfied(customers: Vec<i32>, grumpy: Vec<i32>, minutes: i32) -> i32 {
113+
let k = minutes as usize;
114+
let n = customers.len();
115+
116+
let mut sum = 0;
117+
for i in 0..k {
118+
if grumpy[i] == 1 {
119+
sum += customers[i];
120+
}
121+
}
122+
let mut max = sum;
123+
for i in k..n {
124+
if grumpy[i - k] == 1 {
125+
sum -= customers[i - k];
126+
}
127+
if grumpy[i] == 1 {
128+
sum += customers[i];
129+
}
130+
max = max.max(sum);
131+
}
132+
133+
sum = 0;
134+
for i in 0..n {
135+
if grumpy[i] == 0 {
136+
sum += customers[i];
137+
}
138+
}
139+
sum + max
140+
}
141+
}
142+
```
143+
108144
### **...**
109145

110146
```

solution/1000-1099/1052.Grumpy Bookstore Owner/README_EN.md

+36
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,42 @@ class Solution {
8585
}
8686
```
8787

88+
### **Rust**
89+
90+
```rust
91+
impl Solution {
92+
pub fn max_satisfied(customers: Vec<i32>, grumpy: Vec<i32>, minutes: i32) -> i32 {
93+
let k = minutes as usize;
94+
let n = customers.len();
95+
96+
let mut sum = 0;
97+
for i in 0..k {
98+
if grumpy[i] == 1 {
99+
sum += customers[i];
100+
}
101+
}
102+
let mut max = sum;
103+
for i in k..n {
104+
if grumpy[i - k] == 1 {
105+
sum -= customers[i - k];
106+
}
107+
if grumpy[i] == 1 {
108+
sum += customers[i];
109+
}
110+
max = max.max(sum);
111+
}
112+
113+
sum = 0;
114+
for i in 0..n {
115+
if grumpy[i] == 0 {
116+
sum += customers[i];
117+
}
118+
}
119+
sum + max
120+
}
121+
}
122+
```
123+
88124
### **...**
89125

90126
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
impl Solution {
2+
pub fn max_satisfied(customers: Vec<i32>, grumpy: Vec<i32>, minutes: i32) -> i32 {
3+
let k = minutes as usize;
4+
let n = customers.len();
5+
6+
let mut sum = 0;
7+
for i in 0..k {
8+
if grumpy[i] == 1 {
9+
sum += customers[i];
10+
}
11+
}
12+
let mut max = sum;
13+
for i in k..n {
14+
if grumpy[i - k] == 1 {
15+
sum -= customers[i - k];
16+
}
17+
if grumpy[i] == 1 {
18+
sum += customers[i];
19+
}
20+
max = max.max(sum);
21+
}
22+
23+
sum = 0;
24+
for i in 0..n {
25+
if grumpy[i] == 0 {
26+
sum += customers[i];
27+
}
28+
}
29+
sum + max
30+
}
31+
}

0 commit comments

Comments
 (0)