久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    用算法優(yōu)雅地求出兩組區(qū)間的交集

     華府九五二七 2019-11-15


    本文是區(qū)間系列問題的第三篇,前兩篇分別講了區(qū)間的最大不相交子集和重疊區(qū)間的合并,今天再寫一個算法,可以快速找出兩組區(qū)間的交集。

    先看下題目,LeetCode 第 986 題就是這個問題:

    題目很好理解,就是讓你找交集,注意區(qū)間都是閉區(qū)間。

    思路

    解決區(qū)間問題的思路一般是先排序,以便操作,不過題目說已經(jīng)排好序了,那么就可以用兩個索引指針在AB中游走,把交集找出來,代碼大概是這樣的:

    # A, B 形如 [[0,2],[5,10]...]
    def intervalIntersection(A, B):
        i, j = 0, 0
        res = []
        while i < len(A) and j < len(B):
            # ...
            j += 1
            i += 1
        return res

    不難,我們先老老實實分析一下各種情況。

    首先,對于兩個區(qū)間,我們用[a1,a2][b1,b2]表示在AB中的兩個區(qū)間,那么什么情況下這兩個區(qū)間沒有交集呢:

    只有這兩種情況,寫成代碼的條件判斷就是這樣:

    if b2 < a1 or a2 < b1:
        [a1,a2] 和 [b1,b2] 無交集

    那么,什么情況下,兩個區(qū)間存在交集呢?根據(jù)命題的否定,上面邏輯的否命題就是存在交集的條件:

    # 不等號取反,or 也要變成 and
    if b2 >= a1 and a2 >= b1:
        [a1,a2] 和 [b1,b2] 存在交集

    接下來,兩個區(qū)間存在交集的情況有哪些呢?窮舉出來:

    這很簡單吧,就這四種情況而已。那么接下來思考,這幾種情況下,交集是否有什么共同點呢?

    我們驚奇地發(fā)現(xiàn),交集區(qū)間是有規(guī)律的!如果交集區(qū)間是[c1,c2],那么c1=max(a1,b1),c2=min(a2,b2)!這一點就是尋找交集的核心,我們把代碼更進(jìn)一步:

    while i < len(A) and j < len(B):
        a1, a2 = A[i][0], A[i][1]
        b1, b2 = B[j][0], B[j][1]
        if b2 >= a1 and a2 >= b1:
            res.append([max(a1, b1), min(a2, b2)])
        # ...

    最后一步,我們的指針ij肯定要前進(jìn)(遞增)的,什么時候應(yīng)該前進(jìn)呢?

    結(jié)合動畫示例就很好理解了,是否前進(jìn),只取決于a2b2的大小關(guān)系:

    while i < len(A) and j < len(B):
        # ...
        if b2 < a2:
            j += 1
        else:
            i += 1

    代碼

    總結(jié)一下,區(qū)間類問題看起來都比較復(fù)雜,情況很多難以處理,但實際上通過觀察各種不同情況之間的共性可以發(fā)現(xiàn)規(guī)律,用簡潔的代碼就能處理。

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

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 午夜无码片在线观看影院A| 无码人妻精品一区二区三区久久久| 99欧美日本一区二区留学生| 免费日韩中文字幕高清电影 | 中文文字幕文字幕亚洲色| 国产成人8X人网站视频| 久久午夜夜伦鲁鲁片免费无码影视| 4hu44四虎www在线影院麻豆| 四虎影视国产精品永久在线| 狠狠色噜噜狠狠狠7777奇米| 免费人成网站免费看视频| 久久久久无码精品国产| 久久精品国产99国产精品严洲| 亚洲精品欧美二区三区中文字幕| 国产尤物精品自在拍视频首页| 人妻少妇精品久久久久久| 亚洲人妻系列中文字幕| 狠狠色丁香婷婷综合潮喷| 久久99热只有频精品8| 日韩精品一区二区亚洲AV| 国产综合有码无码中文字幕| 色欲综合久久中文字幕网| 国产激情电影综合在线看| 日本精品一区二区不卡| 精精国产XXXX视频在线播放| 亚洲高清国产拍精品5G| 中文字幕成人精品久久不卡| 综合图区亚洲欧美另类图片| 国产一二三五区不在卡| 色窝窝无码一区二区三区成人网站| 亚洲图片自拍偷图区| 久久精品不卡一区二区| 再深点灬舒服灬太大了少妇| 人妻影音先锋啪啪AV资源| 一区二区三区激情都市| 亚洲中文久久久精品无码| 久久不见久久见免费视频观看| 中国熟妇毛多多裸交视频| 国产色无码精品视频免费| 无码乱人伦一区二区亚洲| 秋霞A级毛片在线看|