一个朋友遇到了一个面试算法题:手写一个列表排序算法。
我记得我朋友刷到过这个算法的,但是当时脑子短路了一样,反正没写全,从公司出来就想起来了可以用双指针的。回家就写完要我发出来了。呵呵,不知道大家是不是也遇到过,面试由于当时环境,心理素质等原因,导致本来可以思考出来的东西回答不是很完美
题目:
输入一个正数组,如果相邻数据相差1(后面-前面=1),则存到新数组输出。
调式1:
输入:[1]
输出:[[1,1]]
调式2:
输入:[1,2,3,4,4,5]
输出:[[1,4],[4,5]]
调式3:
输入:[1,2,3,4,4,5,7]
输出:[[1,4],[4,5],[7,7]]
def demo1(nums):
start=0
end=1
result=[]
for i in range(1,len(nums)):
if nums[end]-nums[start]==end-start:
end+=1
if end==len(nums):
result.append([nums[start], nums[end-1]])
else:
if end-1!=start:
result.append([nums[start],nums[end-1]])
start=end
end+=1
if nums[len(nums) - 1] - nums[len(nums) - 2] != 1:
start = nums[len(nums) - 1]
end = nums[len(nums) - 1]
result.append([start, end])
return result
调式结果: