本文最后更新于: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:
1 2 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:
1 2 3
| 输入:n = 2 输出:1 解释:根据规则,nums、nums 和 nums 之中的最大值是 1
|
示例 3:
1 2 3
| 输入:n = 3 输出:2 解释:根据规则,nums、nums、nums 和 nums 之中的最大值是 2
|
提示:
思路
按照题意生成对应的数组,并实时更新最大值即可
解答
1 2 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; };
|