您的位置:首页 > 其它

leetcode--Summary Ranges

2015-06-26 16:42 197 查看
题目:

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”].

描述:

给出一个没有重复值的排序好的整数数组,返回它的取值范围的集合.

例如:给出[0,1,2,3,4,5,7], 返回[“0->2”,”4->5”,”7”].

Python解决方案:

class Solution:
# @param {integer[]} nums
# @return {string[]}
def summaryRanges(self, nums):
if len(nums) == 0: #如果给出一个空的集合,直接返回一个空的集合
return []
if len(nums) == 1:#如果就只有一个元素
return [str(nums[0])]
'''
至少两个元素的情况:
1 从第2个元素开始遍历:
2 该元素是最后一个元素吗?若是,第3步;否,第6步;
3 该元素与前一个元素连续吗?若是,第4步;否,第5步;
4 若是,将n->nums[i]添加到result里面,返回result
5 将n->nums[i-1]添加到result里面,将nums[i]添加到result里面,返回result
6 该元素与前一个元素连续吗,若是,nums[i]赋值给n.否,第7步;
7 n=m?若是,则前面的取值范围只有一个值,将m添加到result里面;若否,将m->n添加到result里面.
8 遍历至下一个元素,跳回第2步

'''
m = nums[0] # the start
n = nums[0] # the end
result = []
for i in range(1,len(nums)):
if i == len(nums)-1:
if nums[i] != nums[i-1] + 1:
if n == m:
result.append( str(n))
else:
result.append(str(m) + '->' + str(n))
result.append(str(nums[i]))
else:
result.append(str(m) + '->' + str(nums[i]))

elif nums[i] != nums[i-1] + 1: #if bulianxu
if n == m:
result.append( str(n))
else:
result.append(str(m) + '->' + str(n))
n = nums[i]
m = nums[i]
else: #lianxu
n = nums[i]

return result
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: