首页 > 其他分享 >lc3041 修改数组后最大化数组中的连续元素数目

lc3041 修改数组后最大化数组中的连续元素数目

时间:2024-03-31 12:55:05浏览次数:23  
标签:最大化 lc3041 nums int 元素 数组 ans dp

给定一个下标从0开始的只包含正整数的数组nums,你可以将数组中任意元素的值增加至多1,修改后,从数组中选择一个或多个元素,并确保这些元素升序排列后是连续的,求它的最大长度。

将数组排序,然后从大到小处理,每个元素分别计算以它开始能得到的长度,包含它本身和加1后两种情况,递推即可。

class Solution {
public:
    int maxSelectedElements(vector<int>& nums) {
        int n = nums.size();
        sort(nums.begin(), nums.end());
        map<int,int> dp;
        for (int i = n-1; i >= 0; i--) {
            dp[nums[i]] = 1 + dp[nums[i]+1];
            dp[nums[i]+1] = 1 + dp[nums[i]+2];
        }
        int ans = 0;
        for (auto [k,v] : dp) {
            ans = max(ans, v);
        }
        return ans;
    }
};

标签:最大化,lc3041,nums,int,元素,数组,ans,dp
From: https://www.cnblogs.com/chenfy27/p/18106612

相关文章

  • 【Java编程】【算法面试题】【数组合并】以数组 intervals 表示若干个区间的集合,其中
    原始题目:以数组intervals表示若干个区间的集合,其中单个区间为intervals[i]=[starti,endi]。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。......
  • 用函数指针数组来实现对一系列函数的调用
    include<stdio.h>intadd(inta,intb);intsub(inta,intb);intmax(inta,intb);intmin(inta,intb);voidmain(){inta,b,i,k;int(*func[4])(int,int)={add,sub,max,min}//定义指针数组,并对其赋初始值printf("selectoperator(0-add,1-sub,2-max,3-min)......
  • 数组模拟队列
    数组模拟队列通常用一个数组模拟一个队列,用两个变量标记队列的首尾。1intq[SIZE],hh=1,tt;//hh表示队头,tt表示队尾队列操作对应的代码如下:现在要对队列进行 M 个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。输入格式第一行包含整数 M,表示操作......
  • C108 整体二分+树状数组(区修+区查)P3332 [ZJOI2013] K大数查询
    视频链接:C108整体二分+树状数组(区修+区查)P3332[ZJOI2013]K大数查询_哔哩哔哩_bilibili   参考:C82树状数组区修+区查P3372线段树1-董晓-博客园(cnblogs.com)LuoguP3332[ZJOI2013]K大数查询//整体二分+树状数组(区修+区查)O(n*logn*logn)#include<iost......
  • JS数组与对象
    数组什么是数组:数组是可以用来存储一组数据,数组中的数据可以存储任意的数据类型如何定义数组:用[]定义数组,在[]中,多个元素/值中间用逗号分隔数组的格式:变量名=[元素或值]获取数组中的值:变量名[下标]数组元素是一对:下标和值;每一个元素都有相对应的下标,下标从0开始,依次递增......
  • (67)动态口令 (68)解码异或后的数组
    文章目录每日一言题目(67)动态口令解题思路代码题目(68)解码异或后的数组解题思路代码结语每日一言我们并不清楚,人类为何降生到这个世界;但我们可以试着去发现,这是一个什么样的世界。题目(67)动态口令题目链接:动态口令某公司门禁密码使用动态口令技术。初始密码......
  • sort函数对vector一维或者二维数组排序
    目录sort对一维数组排序1、sort对一位数组升序排序2、sort对一维数组降序排序sort对二维数组排序1、sort默认对横坐标进行升序排序,如下:2、使用自定义排序对纵坐标进行升序排序:额外知识:对横坐标进行降序排列,当横坐标相同时,对纵坐标进行升序排序sort对一维数组排序......
  • 24、C++的一维数组概念
    数组是一组数据类型相同的变量,可以存放一组数据。1、创建数组声明数组的语法:数据类型数组名[数组长度];注意:数组长度必须是整数,可以是常量,也可以是变量和表达式。C90规定必须用常量表达式指明数组的大小,C99允许使用整型非常量表达式。经测试,在VS中可以用用整型非常量表达......
  • LeetCode Python - 80. 删除有序数组中的重复项 II
    目录题目描述解法运行结果题目描述给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。说明:为什么返回......
  • toLocaleString 将字符串、日期、数字、数组等对象的本地化
    toLocaleString() 是JavaScript中许多对象(包括 Number、Date 和数组)的一个方法。这个方法返回一个字符串,该字符串表示该对象的本地化版本。这通常意味着它会考虑运行代码的环境的语言和地区设置,来生成一个更易读或更符合当地习惯的字符串表示。对于 Number:当对 Number ......