列表

详情


1646. 获取生成数组中的最大值

给你一个整数 n 。按下述规则生成一个长度为 n + 1 的数组 nums

返回生成数组 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

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int getMaximumGenerated(int n) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 2 MB, 提交时间: 2021-06-18 10:31:03

func getMaximumGenerated(n int) int {
    f := make([]int, n+3)
    f[0] = 0
    f[1] = 1
    m := f[0]
    for i := 2; i <= n; i++ {
        if i % 2 == 0 {
            f[i] = f[i/2]
        } else {
            f[i] = f[i/2] + f[(i/2) + 1]
        }
        m = max(f[i], m)
    }
    if n < 2 {
        return f[n]
    }

    return m
}

func max(x, y int) int {
	if x > y {
		return x
	}
	return y
}

golang 解法, 执行用时: 0 ms, 内存消耗: 2 MB, 提交时间: 2021-06-18 10:27:55

func getMaximumGenerated(n int) int {
    f := make([]int, n+3)
    f[0] = 0
    f[1] = 1
    for i := 2; i <= n; i++ {
        if i % 2 == 0 {
            f[i] = f[i/2]
        } else {

            f[i] = f[i/2] + f[(i/2) + 1]
        }
    }
    m := 0
    for _, k := range f[0:n+1] {
        if k > m {
            m = k
        }
    }
    return m
}

上一题