題目:
給出乙個區間的集合, 請合併所有重疊的區間。(源自:leecode題庫)
示例:
給出 [1,3],[2,6],[8,10],[15,18],
返回 [1,6],[8,10],[15,18].
思路:首先新建乙個類interval 用來儲存區間 形如【1,3】
其次對給出集合的下限進行排序 按照公升序排列 (這裡選擇較為簡單的氣泡排序)
合併區間。這裡要注意的就是條件的選擇,何時將兩個區間合併為乙個區間,何時又跳過考慮下乙個。最後將合併好的區間輸出。
**如下:
#exercise 1#first new one class to store intervals just like (1,3)
classinterval(object):
def__init__(self,s=0,e=0):
self.start = s
self.end = e
#second new one class to solve the question
classsolution(object):
#first new one method to bubble the intervals
defbubbles(self,intervals):
foriinrange(0,len(intervals)):
forjinrange(i+1,len(intervals)):
ifintervals[i].start > intervals[j].start:
intervals[i],intervals[j] = intervals[j],intervals[i]
returnintervals
#second merge intervals , print result
defmerge(self,intervals):
iflen(intervals) > 0:
globalstart
globalend
result = #used to store result
result_mark = 0
intervals = self.bubbles(intervals) #sort
whiletrue:
if(result[result_mark][1] >= intervals[0].start)and(result[result_mark][1] <= intervals[0].end):
result[result_mark][1] = intervals[0].end
intervals.pop(0)
iflen(intervals) == 0:
breakelif(result[result_mark][0] <= intervals[0].start)and(result[result_mark][1] >= intervals[0].end):
intervals.pop(0)
iflen(intervals) == 0:
breakelse:
result_mark += 1
intervals.pop(0)
iflen(intervals) == 0: # not need
breakreturnresult
else:
return
solution = solution()
print(solution.merge([interval(1,5),interval(1,2),interval(11,20)]))
html初學日記3
的作用也是引用別人的文字。但它是對長文字的引用,如在文章中引入大段某知名作家的文字,這時需要這個標籤。等等,上一節標籤不是也是對文字的引用嗎?不要忘記標籤是對簡短文字的引用,比如說引用一句話就用到標籤。如想在我的文章中引用李白 關山月 中的詩句,因為引用文字比較長,所以使用 blockquote 語...
Docker 初學日記 1
今天開始使用linux,為了減少專案各個元件的開發周期,使用docker作為中介軟體的執行環境,系統使用opensuse 1.搭建docker 參考 安裝命令如下 curl fssl bash s docker mirror aliyun也可以使用國內 daocloud 一鍵安裝命令 curl ss...
python初學者日記 找完全數
遍歷1 10000,先算出每個數的因數都有哪些,並儲存這些因數,如果這些因數的和等於這個數,那麼列印這個數。同樣是將繁瑣的計算過程交給機器,我們只要結果。找出10000以內的完全數。完全數 乙個正整數等於除它本身以外的所有其他因數之和,那麼這個數就是完全數 如 6 1 2 3 result 方法一 ...