LeetCode#228 Summary Ranges

Problem Definition:

  Given a sorted integer array without duplicates, return the summary of its ranges.

  For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"].

My Solution:

  

 1 class Solution:
 2     # @param {integer[]} nums
 3     # @return {string[]}
 4     def summaryRanges(self, nums):
 5         sr=[]
 6         n=len(nums)
 7         if n==0:
 8             return sr
 9         start,end=0,0
10         p=1
11         while p<n:
12             if (nums[p]-nums[p-1])>1:
13                 end=p-1
14                 if start==end:
15                     sr.append(str(nums[start]))
16                 else:
17                     sr.append(str(nums[start])+"->"+str(nums[end]))
18                 start=p
19             p+=1
20         end=p-1
21         if start==end:
22             sr.append(str(nums[start]))
23         else:
24             sr.append(str(nums[start])+"->"+str(nums[end]))
25         return sr

 

 

而后在讨论区发现一个短小精悍的写法,显然我对Python太不熟练啦:

1 def summaryRanges(self, nums):
2   ranges, r = [], []
3   for n in nums:
4     if n-1 not in r:
5       r = []
6       ranges += r,
7     r[1:] = n,
8   return ['->'.join(map(str, r)) for r in ranges]

crux:

python的赋值和引用

 

转载于:https://www.cnblogs.com/acetseng/p/4650793.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值