最长和谐子序列

此博客链接:

最长和谐子序列

题目链接:https://leetcode-cn.com/problems/longest-harmonious-subsequence/

题目

和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。

现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。

数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。

 

示例 1:

输入:nums = [1,3,2,2,5,2,3,7]
输出:5
解释:最长的和谐子序列是 [3,2,2,2,3]
示例 2:

输入:nums = [1,2,3,4]
输出:2
示例 3:

输入:nums = [1,1,1,1]
输出:0

题解

遍历数组,找每个数差值为1的数有多少个,取差值为1最长度的数组。这里注意,应该单方便取差值为1,要不取两个数组的差值为1,会出现整个跨度为2的情况。

代码

class Solution {
    public int findLHS(int[] nums) {
         int res=0;
         
         for(int i=0;i<nums.length;i++){
             int count=0;
             int flag=0;
             for(int j=0;j<nums.length;j++){
                 if(nums[j]==nums[i]){
                     count++;
                 }
                 else if(nums[j]+1==nums[i])
                 {
                     count++;
                     flag=1;
                 }
             }
             if(flag==1)
             {
                 res=Math.max(count,res);
             }
         }
         return res;
    }
}

 

结果

 

posted @ 2021-05-24 10:58  萍2樱释  阅读(74)  评论(0编辑  收藏  举报