<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實(shí)戰(zhàn)57:插入?yún)^(qū)間

          共 2002字,需瀏覽 5分鐘

           ·

          2020-10-06 01:42

          算法的重要性,我就不多說了吧,想去大廠,就必須要經(jīng)過基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個(gè)公眾號(hào)后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問題叫做?插入?yún)^(qū)間,我們先來看題面:

          https://leetcode-cn.com/problems/insert-interval/

          Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).


          You may assume that the intervals were initially sorted according to their start times.


          題意

          給出一個(gè)無重疊的 ,按照區(qū)間起始端點(diǎn)排序的區(qū)間列表。
          在列表中插入一個(gè)新的區(qū)間,你需要確保列表中的區(qū)間仍然有序且不重疊(如果有必要的話,可以合并區(qū)間)。

          樣例

          示例 1:

          輸入:intervals = [[1,3],[6,9]], newInterval = [2,5]
          輸出:[[1,5],[6,9]]

          示例 2:

          輸入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
          輸出:[[1,2],[3,10],[12,16]]
          解釋:這是因?yàn)樾碌膮^(qū)間 [4,8] 與 [3,5],[6,7],[8,10]?重疊。


          解題


          題意會(huì)給定一組區(qū)間和一個(gè)單獨(dú)的區(qū)間,要求將這個(gè)單獨(dú)的區(qū)間插入?yún)^(qū)間集合,如果有兩個(gè)區(qū)間存在交叉的情況,需要將它們合并,要求合并之后的最終結(jié)果。從題意上來看,基本上和我們上一篇文章講的區(qū)間合并問題完全一樣。唯一不同的是,在這題當(dāng)中給定的這一組區(qū)間都是天然有序的,我們不需要對(duì)它進(jìn)行排序。

          區(qū)間已經(jīng)有序了,剩下的就很簡(jiǎn)單了,我們只需要進(jìn)行插入即可。區(qū)間插入的判斷條件還是和之前一樣,如果A區(qū)間的左端點(diǎn)在B區(qū)間左端點(diǎn)左側(cè),那么只要A區(qū)間的右側(cè)端點(diǎn)在B區(qū)間左端點(diǎn)的右側(cè)即可。


          class Solution:
          ????def insert(self, intervals:?List[List[int]], newInterval:?List[int]) -> List[List[int]]:
          ????????ret?= []
          ????????# l, r記錄待插入?yún)^(qū)間
          ????????l, r = newInterval
          ????????# 記錄待插入?yún)^(qū)間是否完成插入
          ????????flag = False
          ????????
          ????????for?x, y?in intervals:
          ????????????# x, y記錄當(dāng)前區(qū)間
          ????????????# 如果當(dāng)前區(qū)間在待插入?yún)^(qū)間左側(cè),那么將當(dāng)前區(qū)間插入答案
          ????????????if?y?< l:
          ????????????????ret.append([x, y])
          ????????????# 如果當(dāng)前區(qū)間在待插入?yún)^(qū)間右側(cè),那么將兩個(gè)區(qū)間都插入答案
          ????????????elif r < x:
          ????????????????if?not flag:
          ????????????????????flag = True
          ????????????????????ret.append([l, r])
          ????????????????ret.append([x, y])
          ????????????# 否則,說明當(dāng)前區(qū)間與待插入?yún)^(qū)間可以合并
          ????????????# 更新待插入?yún)^(qū)間的范圍
          ????????????else:
          ????????????????l, r = min(l, x), max(r, y)
          ????????# 如果最后還沒有完成插入,說明待插入?yún)^(qū)間大于所有區(qū)間
          ????????# 手動(dòng)插入,防止遺漏
          ????????if?not flag:
          ????????????ret.append([l, r])
          ????????return?ret


          好了,今天的文章就到這里,如果覺得有所收獲,請(qǐng)順手點(diǎn)個(gè)在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動(dòng)力。


          上期推文:


          LeetCode1-50題匯總,速度收藏!
          LeetCode刷題實(shí)戰(zhàn)51:N 皇后
          LeetCode刷題實(shí)戰(zhàn)52:N皇后 II
          LeetCode刷題實(shí)戰(zhàn)53:最大子序和
          LeetCode刷題實(shí)戰(zhàn)54:螺旋矩陣
          LeetCode刷題實(shí)戰(zhàn)55:跳躍游戲
          LeetCode刷題實(shí)戰(zhàn)56:合并區(qū)間


          瀏覽 22
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青娱乐精品在线视频 | 一起操成人影视 | 操黑骚B 操泥马网 | 免费在线一级片 | 色婷婷五月天在线 |