最长和谐子序列
此博客链接:
最长和谐子序列
题目链接: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; } }
结果
出来混总是要还的