1、题目描述
2、分析
给定一个数组和一个目标值,需要数组内两个数相加等于目标值,返回数组内这两个数的位置。不考虑不存在这样的两个数,也就是说数组范围内一定有解。也不考虑多组解。
首先暴力求解。暴力求解的时间复杂度是O(n^2)。暴力求解是最容易想到的求解方法,遍历给的数组,需要注意的是i和j的选取,i和j其实就是数组的两个游标,通过移动它们,再判断,遍历所有的可能。
更为快速的求解办法是有两种都是利用哈希表(参考官方)。第一种,遍历两次,第一次将每一个元素的值和它的索引添加到表中,第二次检查目标元素(target-nums[i])是否存在于表中。第二种在进行遍历并将元素插入到表中的同时,我们还会回过头来检查表中是否已经存在当前元素所对应的目标元素。如果它存在,那我们已经找到了对应解,并立即将其返回。
3、代码
//暴力求解
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {