我刚开始用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]。
答案 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]]