Problem A: 两数之和
Memory Limit:128 MB
Time Limit:1.000 S
Judge Style:Text Compare
Creator:
Submit:312
Solved:90
Description
给定一个 整数数组 nums 其中 n个整数已从小到大排好序。另给一个整数目标值 target,请你在该 nums 数组中找出和为目标值target的那两个整数,并返回它们的数组下标。(输出为二行,依序给出数值及下标,之间逗号分隔。)
给定的数据只存在一个有效的答案。而且要求数组中同一个元素在答案里不能重复出现。
你可以想出一个时间复杂度小于 O(n^2) 的算法吗?
Input
输入有二行。第一行为 n及 target。第二行为n个整数。数字间空格分隔。
n,target=map(int, input().split())
nums = [int(i) for i in input().split()]Output
分两行输出和为target的两个整数。第一行为在排序 nums数组中前一个数,输出其数值及下标。第二行为在排序 nums数组中后一个数,输出其数值及下标。数字间逗号分隔。
Sample Input Copy
7 -10
-21 -16 0 2 5 6 7
Sample Output Copy
-16,1
6,5
HINT
提示:
2 <= nums长度 <= 10^6
-10^7 <= nums[i] <= 10^7
-10^7 <= target <= 10^7
只会存在一个有效答案
你可以想出一个时间复杂度小于 O(n^2) 的算法吗?