You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

有序数组两数之和双指针解法返回值顺序颠倒问题排查

问题原因及解决办法

问题根源

你返回结果顺序颠倒的核心原因是使用了集合(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:27:32