Input: n =7Output: 3Explanation: According to the given rules: nums[0]=0 nums[1]=1 nums[(1*2)=2]= nums[1]=1 nums[(1*2)+1=3]= nums[1]+ nums[2]=1+1=2 nums[(2*2)=4]= nums[2]=1 nums[(2*2)+1=5]= nums[2]+ nums[3]=1+2=3 nums[(3*2)=6]= nums[3]=2 nums[(3*2)+1=7]= nums[3]+ nums[4]=2+1=3Hence, nums =[0,1,1,2,1,3,2,3], and the maximum ismax(0,1,1,2,1,3,2,3)=3.
The problem is a direct simulation: we build the array step by step using the given rules. For each index, we either copy a previous value or sum two previous values. The answer is simply the maximum value in the constructed array.
classSolution {
publicintgetMaximumGenerated(int n) {
if (n == 0) return 0;
int[] nums =newint[n + 1];
nums[1]= 1;
int ans = 1;
for (int i = 2; i <= n; i++) {
if (i % 2 == 0)
nums[i]= nums[i / 2];
else nums[i]= nums[i / 2]+ nums[i / 2 + 1];
if (nums[i]> ans) ans = nums[i];
}
return ans;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
classSolution {
fungetMaximumGenerated(n: Int): Int {
if (n ==0) return0val nums = IntArray(n + 1)
nums[1] = 1var ans = 1for (i in2..n) {
nums[i] = if (i % 2==0) nums[i / 2] else nums[i / 2] + nums[i / 2 + 1]
if (nums[i] > ans) ans = nums[i]
}
return ans
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
classSolution:
defgetMaximumGenerated(self, n: int) -> int:
if n ==0:
return0 nums: list[int] = [0] * (n +1)
nums[1] =1 ans =1for i in range(2, n +1):
if i %2==0:
nums[i] = nums[i //2]
else:
nums[i] = nums[i //2] + nums[i //2+1]
if nums[i] > ans:
ans = nums[i]
return ans
impl Solution {
pubfnget_maximum_generated(n: i32) -> i32 {
if n ==0 { return0; }
let n = n asusize;
letmut nums =vec![0; n +1];
nums[1] =1;
letmut ans =1;
for i in2..=n {
nums[i] =if i %2==0 {
nums[i /2]
} else {
nums[i /2] + nums[i /2+1]
};
if nums[i] > ans {
ans = nums[i];
}
}
ans
}
}