rustgym/leetcode/
_396_rotate_function.rs1struct Solution;
2
3impl Solution {
4 fn max_rotate_function(a: Vec<i32>) -> i32 {
5 let n = a.len();
6 if n == 0 {
7 return 0;
8 }
9 let sum: i32 = a.iter().sum();
10 let mut f = 0;
11 for i in 0..n {
12 f += i as i32 * a[i];
13 }
14 let mut res = f;
15 for i in (1..n).rev() {
16 f = f + sum - n as i32 * a[i];
17 res = res.max(f);
18 }
19 res
20 }
21}
22
23#[test]
24fn test() {
25 let a = vec![4, 3, 2, 6];
26 let res = 26;
27 assert_eq!(Solution::max_rotate_function(a), res);
28}