有序数组两数之和双指针解法返回值顺序颠倒问题排查
问题原因及解决办法
问题根源
你返回结果顺序颠倒的核心原因是使用了集合(set)类型返回结果。Python里的集合是无序容器,不会保留元素的插入顺序,所以当你返回{l+1, r+1}时,输出的元素顺序是不确定的,就会出现像{12, 3}这种颠倒的情况。
解决方法
把返回的集合换成有序的结构,比如列表或者元组:
- 换成列表:
return [l+1, r+1] - 换成元组:
return (l+1, r+1)
修改后的代码片段:
l = 0 r = len(numbers)-1 while l < r: if numbers[l] + numbers[r] == target: return [l+1, r+1] # 或者用(l+1, r+1) elif numbers[l] + numbers[r] > target: r -= 1 else: l += 1
这样就能保证返回的结果是左指针对应的位置在前,右指针对应的位置在后,和你预期的顺序一致。
内容的提问来源于stack exchange,提问作者oomertaa
相关产品推荐
相关产品推荐

