rustgym/leetcode/
_396_rotate_function.rs

1struct 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}