本文最后更新于:2023年3月19日 晚上
                
              
            
            
              Lt1646. 获取生成数组中的最大值
给你一个整数 n 。按下述规则生成一个长度为 n + 1 的数组 nums :
- nums[0] = 0
- nums[1] = 1
- 当 2 <= 2 * i <= n时,nums[2 * i] = nums[i]
- 当 2 <= 2 * i + 1 <= n时,nums[2 * i + 1] = nums[i] + nums[i + 1]
返回生成数组 nums 中的 最大 值。
示例 1:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | 输入:n = 7输出:3
 解释:根据规则:
 nums = 0
 nums = 1
 nums = nums = 1
 nums = nums + nums = 1 + 1 = 2
 nums = nums = 1
 nums = nums + nums = 1 + 2 = 3
 nums = nums = 2
 nums = nums + nums = 2 + 1 = 3
 因此,nums = ,最大值 3
 
 | 
示例 2:
| 12
 3
 
 | 输入:n = 2输出:1
 解释:根据规则,nums、nums 和 nums 之中的最大值是 1
 
 | 
示例 3:
| 12
 3
 
 | 输入:n = 3输出:2
 解释:根据规则,nums、nums、nums 和 nums 之中的最大值是 2
 
 | 
提示:
思路
按照题意生成对应的数组,并实时更新最大值即可
解答
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 | 
 
 
 var getMaximumGenerated = function (n) {
 if (n <= 1) return n;
 const arr = [0, 1];
 let max = -Infinity;
 for (let i = 2; i <= n; i++) {
 if (i % 2 === 0) {
 arr[i] = arr[i / 2];
 } else {
 num = Math.floor(i / 2);
 arr[i] = arr[num] + arr[num + 1];
 }
 max = Math.max(arr[i], max);
 }
 return max;
 };
 
 |