最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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的評論 (共 條)

分享到微博請遵守國家法律
兴义市| 晋中市| 阜平县| 江北区| 六枝特区| 麟游县| 沙坪坝区| 忻城县| 兰坪| 江口县| 汝阳县| 莆田市| 西乌珠穆沁旗| 宝坻区| 阆中市| 西藏| 秦皇岛市| 讷河市| 信丰县| 丰顺县| 陇西县| 敦化市| 怀柔区| 思南县| 苏尼特右旗| 新沂市| 遂宁市| 介休市| 突泉县| 怀集县| 五华县| 泽普县| 什邡市| 巨野县| 夏邑县| 庐江县| 翁牛特旗| 黔东| 漳浦县| 蒙自县| 曲松县|