题目
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
做题可以直接到两数之和
示例
输入
nums = [2, 7, 11, 15], target = 9
输出
[0, 1]
解释
nums[0] + nums[1] = 2 + 7 = 9
解题
依然给出两份代码,一份是本地可运行的,一份是提交的。
解题思路1
因为题目中没有说数组有序,所以应该是无序数组,首先想到的就是暴力解法。遍历数组中的任意两组和,直到找到一个与目标值匹配的组合,返回结果。
这种解决方案显然并不好,时间复杂度O(n^2),很高。
本地代码
#include <cstdio>
#include <vector>
using namespace std;
int n, nums[20000];
int target;
vector<int> twoSum(){
vector<int> v;
int p1 = 0;
while(p1<n){
int p2 = p1+1;
while(p2<n){
if(nums[p1] + nums[p2] == target){
v.push_back(p1);
v.push_back(p2);
return v;
}
p2++;
}
p1++;
}
}
int main(){
scanf("%d", &n);
for(int a=0; a<n; a++)
scanf("%d", &nums[a]);
scanf("%d", &target);
vector<int> res = twoSum();