LeetCode Python 228 彙總區間

2021-09-14 07:29:40 字數 1705 閱讀 3543

給定乙個無重複元素的有序整數陣列,返回陣列區間範圍的彙總。

示例 1:

輸入: [0,1,2,4,5,7]

輸出: ["0->2","4->5","7"]

解釋: 0,1,2 可組成乙個連續的區間; 4,5 可組成乙個連續的區間。

示例 2:

輸入: [0,2,3,4,6,8,9]

輸出: ["0","2->4","6","8->9"]

解釋: 2,3,4 可組成乙個連續的區間; 8,9 可組成乙個連續的區間。

思路:

直接模擬整個過程就行……

class solution(object):

def summaryranges(self, nums):

""":type nums: list[int]

:rtype: list[str]

"""if not nums:

return nums

start, end = nums[0], nums[0]

res = list()

for i, x in enumerate(nums):

if i == 0:

continue

if x == end + 1:#代表連續

end = x

elif x != end + 1: #中斷了

temp = ""

if start == end: #本次區間只有乙個數

temp += str(end)

else:

temp += str(start) + "->" + str(end)

start, end = x, x

if i == len(nums) - 1: #到最後乙個數了 必須終止了

temp = ""

if start == end: #只有乙個數

temp += str(end)

else:

temp += str(start) + "->" + str(end)

# print start, end

return res if len(nums) > 1 else [str(nums[0])]

下面的寫於2023年8月6日15:47:37

class solution(object):

def summaryranges(self, nums):

""":type nums: list[int]

:rtype: list[str]

"""if not nums:

return nums

start, end = nums[0], nums[0]

res =

for i, num in enumerate(nums):

if i != 0:

if num == end + 1: #連上了

end += 1

else: # 斷開了

if end - start == 0: #只有乙個數

else:

start, end = num, num

if end - start == 0: #處理最後一段

else:

return res

leetcode,python2 最大子序和

給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。高階 如果你已經實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解。class so...

LeetCode Python 打家劫舍I

你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...

leetcode Python編碼練習

貪心演算法 1.環形路上有n個加油站,第i個加油站的汽油量是gas i 你有一輛車,車的油箱可以無限裝汽油。從加油站i走到下乙個加油站 i 1 花費的油量是cost i 你從乙個加油站出發,剛開始 的時候油箱裡面沒有汽油。求從哪個加油站出發可以在環形路上走一圈。返回加油站的下標,如果沒有答案的話返回...