1. 程式人生 > 其它 >【Leetcode】1646. Get Maximum in Generated Array

【Leetcode】1646. Get Maximum in Generated Array

技術標籤:# 貪心、動態規劃與記憶化搜尋leetcode動態規劃演算法

題目地址:

https://leetcode.com/problems/get-maximum-in-generated-array/

給定一個長 n + 1 n+1 n+1的陣列 A A A,其中 A [ 0 ] = 0 , A [ 1 ] = 1 A[0]=0,A[1]=1 A[0]=0,A[1]=1,並且 A [ i ] = { A [ i / 2 ] , i = 2 k A [ i / 2 ] + A [ i / 2 + 1 ] , i = 2 k + 1 A[i]=\begin{cases} A[i/2], i=2k\\ A[i/2]+A[i/2+1], i=2k+1 \end{cases}

A[i]={A[i/2],i=2kA[i/2]+A[i/2+1],i=2k+1 A A A的最大值是多少。

直接遞推。程式碼如下:

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

時空複雜度 O ( n ) O(n) O(n)