题目:https://leetcode.com/problems/two-sum/description/
语言:python3
分析:return indices of the two numbers。显然,该问题应该采用类似HashMap方法解决,而python中字典这一数据类型正相当于HashMap,应该以数字number为键key,indices为值value。
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
# one-pass
dict = {}
for i, num in enumerate(nums):
res = target - num
if res in dict:
return [dict[res], i]
dict[num] = i;
试问如何调试代码段呢?显然补全完整!
举个栗子:
import json
import sys
import io
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
dic = {}
for i, num in enumerate(nums):
res = target - num
if res in dic:
return [dic[res], i]
dic[num] = i
def stringToIntegerList(input):
return json.loads(input)
def integerListToString(nums, len_of_list=None):
if not len_of_list:
len_of_list = len(nums)
return json.dumps(nums[:len_of_list])
def main():
def readlines():
for line in io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8'):
yield line.strip('\n')
lines = readlines()
while True:
try:
line = next(lines)
nums = stringToIntegerList(line)
line = next(lines)
target = int(line)
ret = Solution().twoSum(nums, target)
out = integerListToString(ret)
print(out)
except StopIteration:
break
if __name__ == '__main__':
main()
其实这个代码段现成的,可以拷到本地环境调试调试。