LeetCode简单题之最长和谐子序列
生活随笔
收集整理的這篇文章主要介紹了
LeetCode简单题之最长和谐子序列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
和諧數組是指一個數組里元素的最大值和最小值之間的差別 正好是 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 <= nums.length <= 2 * 10^4
-10^9 <= nums[i] <= 10 ^9
來源:力扣(LeetCode)
解題思路
??這道題本質上就是統計數組中相差為1的元素個數,所以只需要統計各個字符的頻率,然后檢查所有符合條件的元素對,統計它們的總頻率并更新最大值即可。在這里需要注意一個小細節,相差為1可以是小1個單位也可以是大1個單位,統計的時候只需要記一種即可,如果記兩種則會造成重復掃描徒增功耗。
class Solution:def findLHS(self, nums: List[int]) -> int:d=Counter(nums)MAX=0print(d)for i in d.keys():if i+1 in d.keys():if d[i]+d[i+1]>MAX:MAX=d[i]+d[i+1]return MAX
總結
以上是生活随笔為你收集整理的LeetCode简单题之最长和谐子序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之买卖股票的最佳
- 下一篇: LeetCode简单题之和为零的N个唯一