国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

分享到微博請遵守國家法律
清流县| 肇庆市| 固镇县| 邵阳市| 托里县| 黄龙县| 武汉市| 社旗县| 阿尔山市| 长治县| 赣榆县| 星子县| 虞城县| 凤冈县| 黄平县| 四川省| 渭南市| 安宁市| 江油市| 玉林市| 南京市| 永年县| 泽库县| 罗甸县| 花垣县| 澜沧| 乐都县| 涪陵区| 连州市| 托克逊县| 青海省| 石门县| 周至县| 肇庆市| 揭东县| 沧源| 祁东县| 黎川县| 竹北市| 获嘉县| 吴川市|