设行号为i,每一行的按键数f(i)为从上一行正确的按钮已经按下开始,直到按下这一行的正确按钮,每一行的要按下正确的按钮,所需要的按键数f(i) = 1 + (a[i] - 1) * (i + 1),加起来就是结果。 alt

我们要算第三行需要按键数时,首先第一个按钮只需要按一次,右边的按钮每个都需要第一行1次 + 第二行1次 + 1 = 3次,所以这一行所需要的按键数为 1 + (3 * 3)

代码如下

public long findMaxButtons (int[] buttons) {
        // write code here
        long times = 0;

        for (int i = 0; i < buttons.length; i++) {
            times += (buttons[i] - 1) * (long)(i + 1) + 1;
        }

        return times;
    }