初级思路:暴力查找
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int i,j,sum=0;
vector<int> v(2,0);
for(i=0;i<nums.size()-1;i++)
{
sum=target-nums[i];
for(j=i+1;j<nums.size();j++)
{ if(nums[j]==sum)
{ v[0]=i;
v[1]=j;
return v;}
;
}
}
}
};
高级思路,哈希表遍历。事实证明,我们可以一次完成。在进行迭代并将元素插入到表中的同时,我们还会回过头来检查表中是否已经存在当前元素所对应的目标元素。如果它存在,那我们已经找到了对应解,并立即将其返回。
复杂度分析:
-
时间复杂度:O(n)O(n), 我们只遍历了包含有 nn 个元素的列表一次。在表中进行的每次查找只花费 O(1)O(1)的时间。
-
空间复杂度:O(n)O(n), 所需的额外空间取决于哈希表中存储的元素数量,该表最多需要存储 nn 个元素