当前位置: 首页 > news >正文

leetcode-594-Longest Harmonious Subsequence

题目描述:

We define a harmonious array is an array where the difference between its maximum value and its minimum value is exactly 1.

Now, given an integer array, you need to find the length of its longest harmonious subsequence among all its possible subsequences.

Example 1:

Input: [1,3,2,2,5,2,3,7]
Output: 5
Explanation: The longest harmonious subsequence is [3,2,2,2,3].

 

Note: The length of the input array will not exceed 20,000.

 

要完成的函数:

int findLHS(vector<int>& nums)

 

说明:

最大值和最小值相差1,vector里面的数值又都是整数,所以我们要找的子数组只能包含最大值和最小值,不能有其他中间值。

所以我们找1有几个,跟1相差1的(这里我们找同方向的数)即2,有多少个。2有几个,跟2相差1的(依然同个方向)即3,有多少个。

最终统计完,我们就可以知道最长的子数组有多少个元素了。

 

遍历一遍vector,我们可以用map来存储数值的个数。

然后再遍历一遍map,按照上述方法统计各个子数组的长度,记录最长的长度。

 

代码如下:

    int findLHS(vector<int>& nums) 
    {
        unordered_map<int,int>m1;//采用unordered_map更快
        for(int i=0;i<nums.size();i++)//存储各种数字的个数
        {
            if(!m1.count(nums[i]))
                m1[nums[i]]=1;
            else
                m1[nums[i]]++;
        }
        int max1=0;
        for(unordered_map<int,int>::iterator iter=m1.begin();iter!=m1.end();iter++)
        {
            if(m1.count(iter->first+1))//如果存在大1的数
            {
                max1=max(max1,m1[iter->first+1]+iter->second);
            }
        }
        return max1;
    }

上述代码简洁,实测93ms,beats 74.88% of cpp submissions。

-----------------------------------------------------------------------------------

最近在尝试分享文章到腾讯云+社区,两边都会更新的。

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3n2y30g8cc6cs

转载于:https://www.cnblogs.com/chenjx85/p/8992609.html

相关文章:

  • 在龙芯小本上安装Debain8.10
  • 数据智能创建能源领域“智能助手”
  • 数据库基础常用知识
  • “阿里架构师”的JVM之GC详解
  • 干货云集 WOT2016峰会揭密大数据背后的技术难点
  • 收藏好这篇,别再只说“数据劫持”了
  • input框限制只能输入正整数、字母、小数、汉字
  • MySQL 技术总结
  • 浅论各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别
  • 手把手教你如何安装Pycharm——靠谱的Pycharm安装详细教程
  • 腾讯TBS加载网页无法自适应记录
  • CPU状态信息us,sy,ni,id,wa,hi,si,st含义
  • QuickBI助你成为分析师——计算字段功能
  • 基于ASP.NET MVC 微信网页登录授权(scope为snsapi_base) 流程 上 获取OPENID
  • PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
  • Docker容器管理
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • k8s如何管理Pod
  • magento2项目上线注意事项
  • MaxCompute访问TableStore(OTS) 数据
  • Sass Day-01
  • ViewService——一种保证客户端与服务端同步的方法
  • Xmanager 远程桌面 CentOS 7
  • 回顾2016
  • 基于axios的vue插件,让http请求更简单
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 使用common-codec进行md5加密
  • 微信小程序填坑清单
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 写代码的正确姿势
  • 原生Ajax
  • Java性能优化之JVM GC(垃圾回收机制)
  • kubernetes资源对象--ingress
  • 阿里云ACE认证之理解CDN技术
  • ​TypeScript都不会用,也敢说会前端?
  • ​香农与信息论三大定律
  • # 透过事物看本质的能力怎么培养?
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (三)终结任务
  • (十三)Maven插件解析运行机制
  • (十一)图像的罗伯特梯度锐化
  • (五)Python 垃圾回收机制
  • (一)Java算法:二分查找
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转载)深入super,看Python如何解决钻石继承难题
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET 的程序集加载上下文
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .net分布式压力测试工具(Beetle.DT)
  • .net经典笔试题
  • .NET轻量级ORM组件Dapper葵花宝典
  • .NET使用存储过程实现对数据库的增删改查
  • @font-face 用字体画图标
  • @JsonFormat与@DateTimeFormat注解的使用