leetcode twoSum:结果列表中元素的顺序

时间:2016-07-12 15:55:32

标签: python

我刚开始用python解决leetcode中的问题。当我解决两个总和的问题时:Two Sum of LeetCode。我发现列表中结果元素的顺序与正确答案相反。我的代码如下:

If ChkArray(MyArray)=True then
   ....
End If

Public Function ChkArray(ByRef b) As Boolean
    On Error goto 1
    If UBound(b) > 0 Then ChkArray = True
End Function

测试用例是:[3,2,4],目标是6.正确的答案应该是[1,2],而我的回答是[2,1]。

1 个答案:

答案 0 :(得分:0)

您应该在值为sum的目标值的数组中打印两个索引。在[3,2,4]的给定情况下,当您循环所有三个值并始终比较dict的所有值时,您可以在第一次出现解决方案时中断循环。

for key in nums:
    rem = target - key
    if rem not in num_map or **rem==key**:
        continue
    else:
        num0 = num_map[key]
        num1 = num_map[rem]
        **break**
return [num0, num1]

还有一种情况,键和剩余值(3,3)可以与循环所有字典值相同。所以你需要确保处理这种情况。

注意:我尝试在代码中进行最少的更改(上面),而不是重写它。

编辑:您的代码的简化版本

for key in nums:
    rem = target - key
    if rem in num_map and rem!=key:
        return [num_map[key], num_map[rem]]