Get Maximum in Generated Array

给一个数字n, 求n个数字组成的数组, 满足arr[0] = 0; arr[1] = 1; arr[偶数] = arr[偶数/2]; arr[奇数] = arr[奇数/2] + arr[奇数/2+1] 的最大数.

class Solution {
    public int getMaximumGenerated(int n) {
        if(n == 0)
            return 0;
        if(n == 1)
            return 1;
        int[] arr = new int[n+1];
        int res = 1;
        arr[0] = 0;
        arr[1] = 1;
        for(int i = 2; i <= n; i++) {
            if(i % 2 == 0) {
                arr[i] = arr[i / 2];
            } else {
                arr[i] = arr[i / 2] + arr[(i / 2) + 1];
            }
            res = Math.max(res, arr[i]);
        }
        return res;
    }
}