1646.获取创建数组中的最小值(javascript)1646.GetMaximuminGeneratedArray
原创leetcode标题来源: https://leetcode-cn.com/problems/get-maximum-in-generated-array/
给你一个整数 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 中的 最大值。
You are given an integer n. A 0-indexed integer array nums of length n + 1 is generated in the following way:
- nums[0] = 0
- nums[1] = 1
- nums[2 i] = nums[i] when 2 <= 2 i <= n
- nums[2 i + 1] = nums[i] + nums[i + 1] when 2 <= 2 i + 1 <= n
Return the maximum integer in the array nums.
示例 1:
输入:n = 7
输出:3
解释:根据规则:
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 = 3
因此,nums = [0,1,1,2,1,3,2,3],最大值 3
示例 2:
输入:n = 2
输出:1
说明:根据规则,nums[0]、nums[1] 和 nums[2] 最大值 1
示例 3:
输入:n = 3
输出:2
说明:根据规则,nums[0]、nums[1]、nums[2] 和 nums[3] 最大值 2
根据示例,可以发现
nums[0]=0
nums[1]=1
nums[2]=num[1]
nums[3]=num[1]+nums[2]
nums[4]=num[2]
nums[5]=num[2]+nums[3]
nums[6]=num[3]
nums[7]=num[3]+nums[4]
了解法律:
nums[i]=nums[i/2]+nums[i/2+1] i>1
i/2结果是商,向下取整
nums[i] = nums[Math.floor(i / 2)] + i % 2 * nums[Math.floor(i / 2) + 1]
var getMaximumGenerated = function (n) {
if (n < 2) {
return n
}
let newList = new Array(n + 1).fill(0);
newList[0] = 0
newList[1] = 1
for (let i = 2; i <= n; i++) {
newList[i] = newList[Math.floor(i / 2)] + i % 2 * newList[Math.floor(i / 2) + 1]
}
return Math.max(...newList)
}; 版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123




