首页 > 其他分享 >力扣-1646-获取生成数组中的最大值

力扣-1646-获取生成数组中的最大值

时间:2023-10-06 11:36:16浏览次数:33  
标签:1646 nums int max 最大值 示例 力扣 数组

给你一个整数 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:

输入: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

提示:

0 <= n <= 100

class Solution {
public:
    int getMaximumGenerated(int n) {
        int max = 0;
        vector<int>v(n+1);
        if(n == 0){
            max = 0;
            return max;
        }
        else if(n == 1){
            max = 1;
            return max;
        }
        else{
            v[0] = 0;
            v[1] = 1;
            for(int i=2;i<=n;i++){
                if(i % 2 == 0){
                    v[i] = v[i / 2];
                }
                else{
                    v[i] = v[(i-1)/2] + v[(i+1)/2];
                }
            }
            return *max_element(v.begin(), v.end());    
        }
    }
};

 

标签:1646,nums,int,max,最大值,示例,力扣,数组
From: https://www.cnblogs.com/life-pinggen/p/17744360.html

相关文章

  • 力扣---189. 轮转数组
    给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[5,6,7,1,2,3,4]示例 2:输入:nu......
  • 状态机DP,力扣188. 买卖股票的最佳时机 IV
    状态机DP,力扣188.买卖股票的最佳时机IV整数数组prices和一个整数k,其中prices[i]是某支给定的股票在第i天的价格。一次只能参与一笔交易,最多可以进行k笔交易,求最大利润。确定状态f[n+1][k+2][2],f[i][j][0]、f[i][j][1]分别表示前i天最多进行j次交易,且在第i天时......
  • 01-螺旋矩阵(力扣题号59
    我的想法:两重循环,控制换行,打印对应递增数字问题:只能打印出第一行,虽然可以换行但是打印的数字不对正确思路:创建二维矩阵;给二维矩阵赋值;打印二维矩阵代码//题目:/**学习到:*-------写代码遇到的问题*1.vector容器初始化:*2.函数返回类型的确定:该函数(generateMatr......
  • 给PG数据库已有表,已存在列添加序列并设置序列当前值为自增列的最大值
    CREATEORREPLACEFUNCTION"public"."add_sequence_to_table"("p_table_name"text,"p_column_name"text)RETURNS"pg_catalog"."void"AS$BODY$DECLAREmax_valueINTEGER;sequence_nametext;B......
  • TCP/IP连接数的最大值取决于操作系统、硬件和应用程序等多个因素
    TCP/IP连接数的最大值取决于操作系统、硬件和应用程序等多个因素。下面是一些常见操作系统中TCP/IP连接数的默认值和最大值:Windows10/WindowsServer2019:默认值为16384,最大值为16777216Windows8/WindowsServer2012:默认值为16384,最大值为16777216Windows7/WindowsServer......
  • 【力扣】使用双指针进行原地移除元素
    使用双指针进行原地移除元素题目描述给定一个数组nums和一个值val,需要将数组中所有等于val的元素原地删除,并返回删除后数组的新长度。要求:不使用额外的数组空间只能使用O(1)额外空间数组中超过新长度后面的元素可以忽略示例1:输入:nums=[3,2,2,3],val=3输出......
  • java用Stream一行代码实现数据分组统计、排序、最大值、最小值、平均值、总数、合计
    getAverage():它返回所有接受值的平均值。getCount():它计算所有元素的总数。getMax():它返回最大值。getMin():它返回最小值。getSum():它返回所有元素的总和。示例:@GetMapping("/list")publicvoidlist(){List<InputForm>inputForms=inputFormMapper.se......
  • 力扣-1732-找到最高海拔
    有一个自行车手打算进行一场公路骑行,这条路线总共由n+1个不同海拔的点组成。自行车手从海拔为0的点0开始骑行。给你一个长度为n的整数数组gain,其中gain[i]是点i和点i+1的净海拔高度差(0<=i<n)。请你返回最高点的海拔。 示例1:输入:gain=[-5,1,5,0,......
  • 力扣-2011-执行操作后的变量值
    存在一种仅支持4种操作和1个变量X的编程语言:++X和X++使变量X的值加1--X和X--使变量X的值减1最初,X的值是0给你一个字符串数组operations,这是由操作组成的一个列表,返回执行所有操作后,X的最终值。 示例1:输入:operations=["--X","X++","X++"]输出......
  • 力扣-2798-满足目标工作时长的员工数目
    公司里共有n名员工,按从0到n-1编号。每个员工i已经在公司工作了hours[i]小时。公司要求每位员工工作至少target小时。给你一个下标从0开始、长度为n的非负整数数组hours和一个非负整数target。请你用整数表示并返回工作至少target小时的员工数。 示......