Skip to content

Commit 1e2f890

Browse files
committedApr 22, 2022
feat: add solutions to lc problem: No.0396
No.0396.Rotate Function
1 parent 1ad397d commit 1e2f890

File tree

4 files changed

+98
-0
lines changed

4 files changed

+98
-0
lines changed
 

‎solution/0300-0399/0396.Rotate Function/README.md

+36
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,42 @@ func maxRotateFunction(nums []int) int {
147147
}
148148
```
149149

150+
### **TypeScript**
151+
152+
```ts
153+
function maxRotateFunction(nums: number[]): number {
154+
const n = nums.length;
155+
const sum = nums.reduce((r, v) => r + v);
156+
let res = nums.reduce((r, v, i) => r + v * i, 0);
157+
let pre = res;
158+
for (let i = 1; i < n; i++) {
159+
pre = pre - (sum - nums[i - 1]) + nums[i - 1] * (n - 1);
160+
res = Math.max(res, pre);
161+
}
162+
return res;
163+
}
164+
```
165+
166+
### **Rust**
167+
168+
```rust
169+
impl Solution {
170+
pub fn max_rotate_function(nums: Vec<i32>) -> i32 {
171+
let n = nums.len();
172+
let sum: i32 = nums.iter().sum();
173+
let mut pre: i32 = nums.iter().enumerate().map(|(i, &v)| i as i32 * v).sum();
174+
(0..n)
175+
.map(|i| {
176+
let res = pre;
177+
pre = pre - (sum - nums[i]) + nums[i] * (n - 1) as i32;
178+
res
179+
})
180+
.max()
181+
.unwrap_or(0)
182+
}
183+
}
184+
```
185+
150186
### **...**
151187

152188
```

‎solution/0300-0399/0396.Rotate Function/README_EN.md

+36
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,42 @@ func maxRotateFunction(nums []int) int {
129129
}
130130
```
131131

132+
### **TypeScript**
133+
134+
```ts
135+
function maxRotateFunction(nums: number[]): number {
136+
const n = nums.length;
137+
const sum = nums.reduce((r, v) => r + v);
138+
let res = nums.reduce((r, v, i) => r + v * i, 0);
139+
let pre = res;
140+
for (let i = 1; i < n; i++) {
141+
pre = pre - (sum - nums[i - 1]) + nums[i - 1] * (n - 1);
142+
res = Math.max(res, pre);
143+
}
144+
return res;
145+
}
146+
```
147+
148+
### **Rust**
149+
150+
```rust
151+
impl Solution {
152+
pub fn max_rotate_function(nums: Vec<i32>) -> i32 {
153+
let n = nums.len();
154+
let sum: i32 = nums.iter().sum();
155+
let mut pre: i32 = nums.iter().enumerate().map(|(i, &v)| i as i32 * v).sum();
156+
(0..n)
157+
.map(|i| {
158+
let res = pre;
159+
pre = pre - (sum - nums[i]) + nums[i] * (n - 1) as i32;
160+
res
161+
})
162+
.max()
163+
.unwrap_or(0)
164+
}
165+
}
166+
```
167+
132168
### **...**
133169

134170
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
impl Solution {
2+
pub fn max_rotate_function(nums: Vec<i32>) -> i32 {
3+
let n = nums.len();
4+
let sum: i32 = nums.iter().sum();
5+
let mut pre: i32 = nums.iter().enumerate().map(|(i, &v)| i as i32 * v).sum();
6+
(0..n)
7+
.map(|i| {
8+
let res = pre;
9+
pre = pre - (sum - nums[i]) + nums[i] * (n - 1) as i32;
10+
res
11+
})
12+
.max()
13+
.unwrap_or(0)
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
function maxRotateFunction(nums: number[]): number {
2+
const n = nums.length;
3+
const sum = nums.reduce((r, v) => r + v);
4+
let res = nums.reduce((r, v, i) => r + v * i, 0);
5+
let pre = res;
6+
for (let i = 1; i < n; i++) {
7+
pre = pre - (sum - nums[i - 1]) + nums[i - 1] * (n - 1);
8+
res = Math.max(res, pre);
9+
}
10+
return res;
11+
}

0 commit comments

Comments
 (0)