这是崔斯特的第四十六篇原创文章
开始刷题咯 (๑• . •๑)
题目
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:1234给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]
解题思路
Go
a + b = target
也可以看成是
a = target - b
在map[整数]整数的序号中,可以查询到a的序号。这样就不用嵌套两个for循环了。
|
|
Python
- 由于要找到符合题意的数组元素的下标,所以先要将原来的数组深拷贝一份,然后排序。
- 然后在排序后的数组中找两个数使它们相加为target。这个思路比较明显:使用两个指针,一个指向头,一个指向尾,两个指针向中间移动并检查两个指针指向的数的和是否为target。如果找到了这两个数,再将这两个数在原数组中的位置找出来就可以了。
- 要注意的一点是:在原来数组中找下标时,需要一个从头找,一个从尾找,要不无法通过。如这个例子:numbers=[0,1,2,0]; target=0。如果都从头开始找,就会有问题。
|
|