LeetCode-Day64(C++) 594. 最長和諧子序列

594. 最長和諧子序列

和諧數(shù)組是指一個數(shù)組里元素的最大值和最小值之間的差別 正好是 1 斥难。

現(xiàn)在跟伏,給你一個整數(shù)數(shù)組 nums 泳桦,請你在所有可能的子序列中找到最長的和諧子序列的長度束倍。

數(shù)組的子序列是一個由數(shù)組派生出來的序列,它可以通過刪除一些元素或不刪除元素倔叼、且不改變其余元素的順序而得到肛度。

示例 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

方法二:哈希映射
在方法一中郑现,我們枚舉了 x 后夕春,遍歷數(shù)組找出所有的 x 和 x + 1未荒。我們也可以用一個哈希映射(HashMap)來存儲每個數(shù)出現(xiàn)的次數(shù),這樣就能在 O(1)O(1) 的時間內(nèi)得到 x 和 x + 1 出現(xiàn)的次數(shù)及志。

我們首先遍歷一遍數(shù)組片排,得到哈希映射。隨后遍歷哈希映射速侈,設當前遍歷到的鍵值對為 (x, value)率寡,那么我們就查詢 x + 1 在哈希映射中對應的值,就得到了 x 和 x + 1 出現(xiàn)的次數(shù)倚搬。

方法三:哈希映射 + 單次掃描
在方法二中冶共,我們需要對數(shù)組進行一次掃描,再對哈希映射進行一次掃描每界。事實上比默,我們也可以設計出只進行一次掃描的算法。

我們掃描一次數(shù)組盆犁,當掃描到元素 x 時,我們首先將 x 加入哈希映射篡九,隨后獲取哈希映射中 x - 1, x, x + 1 三者出現(xiàn)的次數(shù) u, v, w谐岁,那么 u + v 即為 x - 1, x 組成的和諧子序列的長度,v + w 即為 x, x + 1 組成的和諧子序列的長度榛臼。假設數(shù)組中最長的和諧子序列的最后一個元素在數(shù)組中的位置為 i伊佃,那么在掃描到 nums[i] 時,u + v 和 v + w 中一定有一個就是答案沛善。因此這種方法可以找到最長的和諧子序列的長度航揉。

class Solution {
public:
    int findLHS(vector<int>& nums) {
        unordered_map<int, int> map;
        int ans = 0;
        for (int i : nums) {
            map[i]++;
            if(map.count(i - 1))
                ans = max(ans, map[i] + map[i - 1]);
            if(map.count(i + 1))
                ans = max(ans, map[i] + map[i + 1]);
        }
        return ans;
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市金刁,隨后出現(xiàn)的幾起案子帅涂,更是在濱河造成了極大的恐慌,老刑警劉巖尤蛮,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件媳友,死亡現(xiàn)場離奇詭異,居然都是意外死亡产捞,警方通過查閱死者的電腦和手機醇锚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坯临,“玉大人焊唬,你說我怎么就攤上這事恋昼。” “怎么了赶促?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵液肌,是天一觀的道長。 經(jīng)常有香客問我芳杏,道長矩屁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任爵赵,我火速辦了婚禮吝秕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘空幻。我一直安慰自己烁峭,他們只是感情好,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布秕铛。 她就那樣靜靜地躺著约郁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪但两。 梳的紋絲不亂的頭發(fā)上鬓梅,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機與錄音谨湘,去河邊找鬼绽快。 笑死,一個胖子當著我的面吹牛紧阔,可吹牛的內(nèi)容都是我干的坊罢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼擅耽,長吁一口氣:“原來是場噩夢啊……” “哼活孩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起乖仇,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤憾儒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后乃沙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體航夺,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年崔涂,在試婚紗的時候發(fā)現(xiàn)自己被綠了阳掐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缭保,靈堂內(nèi)的尸體忽然破棺而出汛闸,到底是詐尸還是另有隱情,我是刑警寧澤艺骂,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布诸老,位于F島的核電站,受9級特大地震影響钳恕,放射性物質(zhì)發(fā)生泄漏别伏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一忧额、第九天 我趴在偏房一處隱蔽的房頂上張望厘肮。 院中可真熱鬧,春花似錦睦番、人聲如沸类茂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巩检。三九已至,卻和暖如春示启,著一層夾襖步出監(jiān)牢的瞬間兢哭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工夫嗓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厦瓢,地道東北人。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓啤月,卻偏偏與公主長得像,于是被迫代替她去往敵國和親劳跃。 傳聞我的和親對象是個殘疾皇子谎仲,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 題目鏈接難度:簡單 類型: 和諧數(shù)組是指一個數(shù)組里元素的最大值和最小值之間的差別正好是1。 現(xiàn)在...
    wzNote閱讀 685評論 0 1
  • 594 Longest Harmonious Subsequence 最長和諧子序列 Description:We...
    air_melt閱讀 92評論 0 0
  • 內(nèi)容 和諧數(shù)組是指一個數(shù)組里元素的最大值和最小值之間的差別正好是1刨仑。 現(xiàn)在郑诺,給定一個整數(shù)數(shù)組,你需要在所有可能的子...
    吃飯用盤裝閱讀 419評論 0 0
  • 題目 難度:★☆☆☆☆類型:數(shù)組 和諧數(shù)組是指一個數(shù)組里元素的最大值和最小值之間的差別正好是1杉武。 現(xiàn)在辙诞,給定一個整...
    玖月晴閱讀 1,024評論 0 0
  • 題目:和諧數(shù)組是指一個數(shù)組里元素的最大值和最小值之間的差別正好是1。現(xiàn)在轻抱,給定一個整數(shù)數(shù)組飞涂,你需要在所有可能的子序...
    小亮_39ed閱讀 255評論 0 0