日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

區(qū)間問題之合并相交區(qū)間

 華府九五二七 2019-11-15

預(yù)計(jì)閱讀時(shí)間:3 分鐘

上篇文章 貪心算法之區(qū)間調(diào)度問題 用貪心算法解決了區(qū)間調(diào)度問題:給你很多區(qū)間,讓你求其中的最大不重疊子集。

其實(shí)對(duì)于區(qū)間相關(guān)的問題,還有很多其他類型,本文就來講講區(qū)間合并問題(Merge Interval)。LeetCode 第 56 題就是一道相關(guān)問題,題目很好理解:

我們解決區(qū)間問題的一般思路是先排序,然后觀察規(guī)律。

一、思路

一個(gè)區(qū)間可以表示為[start,end],前文聊的區(qū)間調(diào)度問題,需要按end排序,以便滿足貪心選擇性質(zhì)。而對(duì)于區(qū)間合并問題,其實(shí)按endstart排序都可以,不過為了清晰起見,我們選擇按start排序。

顯然,對(duì)于幾個(gè)相交區(qū)間合并后的結(jié)果區(qū)間x,x.start一定是這些相交區(qū)間中start最小的,x.end一定是這些相交區(qū)間中end最大的。

由于已經(jīng)排了序,x.start很好確定,求x.end也很容易,可以類比在數(shù)組中找最大值的過程:

int max_ele = arr[0];
for (int i = 1; i < arr.length; i++) 
    max_ele = max(max_ele, arr[i]);
return max_ele;

二、代碼

看下動(dòng)畫就一目了然了:

至此,區(qū)間合并問題就解決了。本文篇幅短小,因?yàn)閰^(qū)間合并只是區(qū)間問題的一個(gè)類型,后續(xù)還有一些區(qū)間問題。本想把所有問題類型都總結(jié)在一篇文章,但有讀者反應(yīng),長(zhǎng)文只會(huì)收藏不會(huì)看… 所以還是分成小短文吧,歡迎留言寫下你的看法。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多