Fork me on GitHub

[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].

思路:

定义一个map,记录数组中数字出现的次数,连续两个数字出现次数的和即为harmonious subsequence。

nt findLHS(vector<int>& nums)
{
  if(nums.size()<1)return 0;
  map<int,int>table;
  sort(nums.begin(),nums.end());
  for(int i=0;i<nums.size();i++)
  {
    table[nums[i]]++;
  }
  map<int ,int>::iterator it = table.begin();
  map<int ,int>::iterator temp = it;
  temp++;
  int ret  =0;
  for(;temp!=table.end();it++,temp++)
  {
    if(table.count(it->first+1))
    {      
      ret = max(ret,it->second+temp->second);      
    }
  }
  return ret;        
}

 

posted @ 2017-05-21 11:37  hellowOOOrld  阅读(218)  评论(0编辑  收藏  举报