五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

349. 350. | 區(qū)間合并題型 LeetCode

2020-05-15 10:53 作者:有木乘舟  | 我要投稿


分析:

? 題目只需要輸出有交集的區(qū)間中的元素,且不重復(fù)。我們可以用哈希表來存儲nums2,然后遍歷nums1判斷是否有元素存在于哈希表中,若是的話就是交集元素。

? 不過,仔細(xì)觀察代碼可以發(fā)現(xiàn),對于nums2中重復(fù)的元素,我們只需要存儲一次即可,也就是說哈希表中的每個元素都是不同的。這時候我們可以直接用set容器來替代map,并且set容器可以直接刪除交集元素,而無需額外的判斷。??

分析:

? 這題與349一樣,用哈希表來解題就可以了。

分析:

? 比較常規(guī)的判斷區(qū)間是否重疊的問題,我們?nèi)匀豢梢韵仍O(shè)置一個新的合并集合,將合并后的,或者不需要合并的區(qū)間放進(jìn)去,然后返回這個集合的大小。

? 核心思路還是:集合排序后,可以合并的區(qū)間一定互相靠近且連續(xù)。并且,題目只要求當(dāng)某一個集合完全包含在另一個集合當(dāng)中時,才需要刪除,部分重疊則不需要刪除。

? 因此,我們可以將其歸納為以下幾個步驟:

  • 對當(dāng)前區(qū)間,若其不與其他區(qū)間重疊,則放入新集合

  • 若當(dāng)前區(qū)間與新區(qū)間重合,則判斷:

    • 當(dāng)前區(qū)間是否包含在新區(qū)間內(nèi) [1, 2] -> [1,4],若是,則用新區(qū)間替換當(dāng)前區(qū)間

    • 當(dāng)前區(qū)間是否包含了新區(qū)間 [2,8] -> [3,6],若是,則不做任何操作,繼續(xù)循環(huán)

  • 否則,將新區(qū)間放入新集合,繼續(xù)循環(huán)

? 進(jìn)一步的,我們發(fā)現(xiàn) [1,2]->[1,4] 和 [2,8]->[3,6] 只是因為前后位置不同,所以導(dǎo)致了我們需外額外判斷這兩種情況。那如果,我們能把大的區(qū)間放到前面去,小的區(qū)間放到后面去,是不是就只需要判斷一次就可以了呢?

? 這種方法就是利用STL的特性,在排序的時候就把上面的那種情況考慮進(jìn)去,使得排序后的集合,大的區(qū)間永遠(yuǎn)在小的區(qū)間前面。這樣的話,我們只需要判斷當(dāng)前區(qū)間是否包含新區(qū)間即可。

349. 350. | 區(qū)間合并題型 LeetCode的評論 (共 條)

分享到微博請遵守國家法律
鹤峰县| 广河县| 昌吉市| 西峡县| 双牌县| 安溪县| 图们市| 溧水县| 扎鲁特旗| 建德市| 海兴县| 疏勒县| 西昌市| 哈尔滨市| 望江县| 桂阳县| 濉溪县| 库尔勒市| 松江区| 昂仁县| 新余市| 新民市| 腾冲县| 康平县| 无锡市| 铜梁县| 晋城| 新乡县| 塔城市| 乐平市| 山阴县| 保定市| 四平市| 安宁市| 陵川县| 乌什县| 元阳县| 彩票| 大丰市| 桐柏县| 丰都县|