chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一篇文章秒殺三道區(qū)間相關(guān)的問(wèn)題

算法與數(shù)據(jù)結(jié)構(gòu) ? 來(lái)源:算法與數(shù)據(jù)結(jié)構(gòu) ? 作者:labuladong ? 2020-10-12 14:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

經(jīng)常有讀者問(wèn)區(qū)間相關(guān)的問(wèn)題,今天寫一篇文章,秒殺三道區(qū)間相關(guān)的問(wèn)題。

所謂區(qū)間問(wèn)題,就是線段問(wèn)題,讓你合并所有線段、找出線段的交集等等。主要有兩個(gè)技巧:

1、排序。常見的排序方法就是按照區(qū)間起點(diǎn)排序,或者先按照起點(diǎn)升序排序,若起點(diǎn)相同,則按照終點(diǎn)降序排序。當(dāng)然,如果你非要按照終點(diǎn)排序,無(wú)非對(duì)稱操作,本質(zhì)都是一樣的。

2、畫圖。就是說(shuō)不要偷懶,勤動(dòng)手,兩個(gè)區(qū)間的相對(duì)位置到底有幾種可能,不同的相對(duì)位置我們的代碼應(yīng)該怎么去處理。

廢話不多說(shuō),下面我們來(lái)做題。

區(qū)間覆蓋問(wèn)題

這是力扣第 1288 題,看下題目:

題目問(wèn)我們,去除被覆蓋區(qū)間之后,還剩下多少區(qū)間,那么我們可以先算一算,被覆蓋區(qū)間有多少個(gè),然后和總數(shù)相減就是剩余區(qū)間數(shù)。

對(duì)于這種區(qū)間問(wèn)題,如果沒(méi)啥頭緒,首先排個(gè)序看看,比如我們按照區(qū)間的起點(diǎn)進(jìn)行升序排序:

排序之后,兩個(gè)相鄰區(qū)間可能有如下三種相對(duì)位置:

對(duì)于這三種情況,我們應(yīng)該這樣處理:

對(duì)于情況一,找到了覆蓋區(qū)間。

對(duì)于情況二,兩個(gè)區(qū)間可以合并,成一個(gè)大區(qū)間。

對(duì)于情況三,兩個(gè)區(qū)間完全不相交。

依據(jù)幾種情況,我們可以寫出如下代碼:

intremoveCoveredIntervals(int[][]intvs){ //按照起點(diǎn)升序排列,起點(diǎn)相同時(shí)降序排列 Arrays.sort(intvs,(a,b)->{ if(a[0]==b[0]){ returnb[1]-a[1]; } returna[0]-b[0]; }); //記錄合并區(qū)間的起點(diǎn)和終點(diǎn) intleft=intvs[0][0]; intright=intvs[0][1]; intres=0; for(inti=1;i=intv[1]){ res++; } //情況二,找到相交區(qū)間,合并 if(right>=intv[0]&&right<=?intv[1])?{ ????????????right?=?intv[1]; ????????} ????????//?情況三,完全不相交,更新起點(diǎn)和終點(diǎn) ????????if?(right?

以上就是本題的解法代碼,起點(diǎn)升序排列,終點(diǎn)降序排列的目的是防止如下情況:

對(duì)于這兩個(gè)起點(diǎn)相同的區(qū)間,我們需要保證長(zhǎng)的那個(gè)區(qū)間在上面(按照終點(diǎn)降序),這樣才會(huì)被判定為覆蓋,否則會(huì)被錯(cuò)誤地判定為相交,少算一個(gè)覆蓋區(qū)間。

區(qū)間合并問(wèn)題

力扣第 56 題就是一道相關(guān)問(wèn)題,題目很好理解:

title

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

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

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

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

intmax_ele=arr[0]; for(inti=1;i

然后就可以寫出完整代碼

#intervals形如[[1,3],[2,6]...] defmerge(intervals): ifnotintervals:return[] #按區(qū)間的start升序排列 intervals.sort(key=lambdaintv:intv[0]) res=[] res.append(intervals[0]) foriinrange(1,len(intervals)): curr=intervals[i] #res中最后一個(gè)元素的引用 last=res[-1] ifcurr[0]<=?last[1]: ????????????#?找到最大的?end ????????????last[1]?=?max(last[1],?curr[1]) ????????else: ????????????#?處理下一個(gè)待合并區(qū)間 ????????????res.append(curr) ????return?res

區(qū)間交集問(wèn)題

先看下題目,力扣第 986 題就是這個(gè)問(wèn)題:

title

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

解決區(qū)間問(wèn)題的思路一般是先排序,以便操作,不過(guò)題目說(shuō)已經(jīng)排好序了,那么可以用兩個(gè)索引指針在A和B中游走,把交集找出來(lái),代碼大概是這樣的:

#A,B形如[[0,2],[5,10]...] defintervalIntersection(A,B): i,j=0,0 res=[] whilei

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

首先,對(duì)于兩個(gè)區(qū)間,我們用[a1,a2]和[b1,b2]表示在A和B中的兩個(gè)區(qū)間,那么什么情況下這兩個(gè)區(qū)間沒(méi)有交集呢:

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

ifb2

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

#不等號(hào)取反,or也要變成and ifb2>=a1anda2>=b1: [a1,a2]和[b1,b2]存在交集

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

這很簡(jiǎn)單吧,就這四種情況而已。那么接下來(lái)思考,這幾種情況下,交集是否有什么共同點(diǎn)呢?

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

whilei=a1anda2>=b1: res.append([max(a1,b1),min(a2,b2)]) #...

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

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

whilei

以此思路寫出代碼:

#A,B形如[[0,2],[5,10]...] defintervalIntersection(A,B): i,j=0,0#雙指針 res=[] whilei=a1anda2>=b1: #計(jì)算出交集,加入res res.append([max(a1,b1),min(a2,b2)]) #指針前進(jìn) ifb2

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

責(zé)任編輯:xj

原文標(biāo)題:一文秒殺所有區(qū)間相關(guān)問(wèn)題

文章出處:【微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4972

    瀏覽量

    74133
  • 程序員
    +關(guān)注

    關(guān)注

    4

    文章

    956

    瀏覽量

    30963
  • 區(qū)間
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    8163

原文標(biāo)題:一文秒殺所有區(qū)間相關(guān)問(wèn)題

文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    74HC541:八通態(tài)緩沖/線驅(qū)動(dòng)器的深度解析

    74HC541:八通態(tài)緩沖/線驅(qū)動(dòng)器的深度解析 作為電子工程師,我們?cè)谌粘TO(shè)計(jì)中常常需要用到各種邏輯器件來(lái)構(gòu)建穩(wěn)定、高效的電路系統(tǒng)。今天,我們就來(lái)詳細(xì)探討下 SGMICRO 公司
    的頭像 發(fā)表于 03-13 14:20 ?200次閱讀

    LT3507A:高性能三通道降壓調(diào)節(jié)器的深度解析

    LT3507A:高性能三通道降壓調(diào)節(jié)器的深度解析 在電子設(shè)計(jì)領(lǐng)域,電源管理是個(gè)至關(guān)重要的環(huán)節(jié)。款合適的電源管理芯片能夠?yàn)檎麄€(gè)系統(tǒng)提供穩(wěn)定、高效的電源供應(yīng),從而確保系統(tǒng)的正常運(yùn)行。今天,我們就來(lái)
    的頭像 發(fā)表于 03-10 14:35 ?106次閱讀

    LT3514:款高性能的三通道降壓開關(guān)穩(wěn)壓器

    LT3514:款高性能的三通道降壓開關(guān)穩(wěn)壓器 在電子設(shè)計(jì)領(lǐng)域,電源管理芯片的性能直接影響著整個(gè)系統(tǒng)的穩(wěn)定性和效率。今天,我們就來(lái)深入了解下Linear Technology公司推出的LT3514
    的頭像 發(fā)表于 03-09 09:55 ?348次閱讀

    LT6553:高速三通道視頻放大器的卓越之選

    LT6553:高速三通道視頻放大器的卓越之選 在高速視頻信號(hào)處理領(lǐng)域,款性能出色的放大器至關(guān)重要。今天,我們就來(lái)深入了解下Linear Technology公司的LT6553高速三通道
    的頭像 發(fā)表于 01-26 17:05 ?750次閱讀

    高速三通道2:1多路復(fù)用器AD8185的特性與應(yīng)用

    Devices公司推出的高速三通道2:1多路復(fù)用器,憑借其卓越的性能,在眾多領(lǐng)域得到了廣泛應(yīng)用。下面我們就來(lái)詳細(xì)了解下這兩款器件。 文件下載: AD8185.pdf 器件概述 AD8183(增益G
    的頭像 發(fā)表于 01-24 15:10 ?604次閱讀

    探索AEDR - 9930EL:三通道反射式增量線性編碼器的卓越性能

    - 9930EL三通道反射式增量線性編碼器,詳細(xì)了解其特點(diǎn)、應(yīng)用以及設(shè)計(jì)要點(diǎn)。 文件下載: Broadcom AEDR-9930EL 3通反射式光學(xué)編碼器.pdf 產(chǎn)品概述 AEDR - 9930EL是
    的頭像 發(fā)表于 12-30 15:40 ?334次閱讀

    探索AEDR - 9930E:三通道反射式增量旋轉(zhuǎn)編碼器的技術(shù)剖析

    反射式光學(xué)編碼器.pdf 產(chǎn)品概述 AEDR - 9930E是三通道反射式光學(xué)編碼器,擁有可選擇和可編程的
    的頭像 發(fā)表于 12-30 15:40 ?263次閱讀

    探索AEDR - 9940:高性能三通道反射式增量編碼器的奧秘

    探索AEDR - 9940:高性能三通道反射式增量編碼器的奧秘 在電子工程師的日常設(shè)計(jì)工作中,編碼器是個(gè)關(guān)鍵的組件,它在眾多領(lǐng)域都發(fā)揮著重要作用。今天,我們就來(lái)深入探討下博通(Broadcom
    的頭像 發(fā)表于 12-30 14:50 ?434次閱讀

    給燒錄工程師的 checklist:新批次芯片上線前的“保險(xiǎn)”

    批次樣板進(jìn)行數(shù)據(jù)對(duì)比。 第保險(xiǎn):量產(chǎn)前哨戰(zhàn)(試產(chǎn)環(huán)節(jié))首件確認(rèn)(FAI): 在正式量產(chǎn)線的第個(gè)工位,燒錄首件后,不直接流入下工序。應(yīng)由工藝或質(zhì)檢人員,使用獨(dú)立的測(cè)試工裝或儀器,
    發(fā)表于 12-30 14:00

    0.7 至 2.7 GHz 三通道 SPST (3xSPST) 分流 MIPI? 天線調(diào)諧開關(guān) skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()0.7 至 2.7 GHz 三通道 SPST (3xSPST) 分流 MIPI? 天線調(diào)諧開關(guān)相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有0.7 至 2.7 GHz 三通道 SPST
    發(fā)表于 10-31 18:30
    0.7 至 2.7 GHz <b class='flag-5'>三通道</b> SPST (3xSPST) 分流 MIPI? 天線調(diào)諧開關(guān) skyworksinc

    京東:對(duì)接秒殺活動(dòng)API策劃限時(shí)搶購(gòu),制造稀缺感

    ? ?在電商競(jìng)爭(zhēng)激烈的今天,京東的秒殺活動(dòng)已成為吸引用戶、提升銷量的核心策略。通過(guò)對(duì)接秒殺活動(dòng)API,商家可以高效策劃限時(shí)搶購(gòu),制造稀缺感,激發(fā)用戶購(gòu)買欲望。稀缺感源于心理學(xué)原理:當(dāng)商品或時(shí)間有限
    的頭像 發(fā)表于 09-16 14:30 ?622次閱讀
    京東:對(duì)接<b class='flag-5'>秒殺</b>活動(dòng)API策劃限時(shí)搶購(gòu),制造稀缺感

    匠心測(cè)量,智造未來(lái)——是德科技京東旗艦店限時(shí)秒殺開啟!

    是德科技京東自營(yíng)旗艦店在本月9日重磅開業(yè),開業(yè)期間(9日至11日每天10:00)推出"限時(shí)秒殺"活動(dòng),多款高端測(cè)試儀器以超值優(yōu)惠價(jià)格回饋廣大科研工作者和工程師。本次活動(dòng)精選款明星產(chǎn)品
    發(fā)表于 09-08 09:36 ?1411次閱讀
    匠心測(cè)量,智造未來(lái)——是德科技京東旗艦店限時(shí)<b class='flag-5'>秒殺</b>開啟!

    三通道 LCD 偏置電源管理 IC,帶有三通道高效白光 LED 驅(qū)動(dòng)器 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()三通道 LCD 偏置電源管理 IC,帶有三通道高效白光 LED 驅(qū)動(dòng)器相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有三通道 LCD 偏置電源管理 IC,帶有
    發(fā)表于 07-30 18:33
    <b class='flag-5'>三通道</b> LCD 偏置電源管理 IC,帶有<b class='flag-5'>三通道</b>高效白光 LED 驅(qū)動(dòng)器 skyworksinc

    1000+例各類獲獎(jiǎng)電賽作品資料集(電路、代碼、教程文末免費(fèi)領(lǐng)?。?/a>

    學(xué)習(xí)和動(dòng)手能力!、算法資料相關(guān)文件可在下文掃碼領(lǐng)取)二、優(yōu)秀作品相關(guān)文件可在下文掃碼領(lǐng)?。?b class='flag-5'>三
    的頭像 發(fā)表于 05-22 11:41 ?810次閱讀
    1000+例各類獲獎(jiǎng)電賽作品資料集(電路<b class='flag-5'>篇</b>、代碼<b class='flag-5'>篇</b>、教程<b class='flag-5'>篇</b>文末免費(fèi)領(lǐng)?。? />    </a>
</div>                              <div   id=

    怎么利用matlab得到95%,80%和70%的置信區(qū)間,并生成不同區(qū)間下的功率誤差貝塔分布?

    matlab仿真 matlab新手,怎么利用matlab得到95%,80%和70%的置信區(qū)間,并生成不同區(qū)間下的功率誤差貝塔分布
    發(fā)表于 04-09 01:21