重庆网站建设公司是什么搜索引擎营销的主要方式有
题目
【LeetCode】1. 两数之和
思路
方法一:暴力解。先用size()求出数组长度,遍历两个for找出和为target的数组下标。如果找不到则返回{}。
方法二:哈希表。时间复杂度更低,但自己想不到。用unordered_map,与map的区别是unordered_map 容器不会像 map 容器那样对存储的数据进行排序。创建一个哈希表,对于每一个 x,我们首先查询哈希表中是否存在 target - x,然后将 x 插入到哈希表中,即可保证不会让 x 和自己匹配。
代码(暴力解)
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {int n=nums.size();for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if(nums[i]+nums[j]==target){return {i,j};}}}return {};}
};
代码(哈希)
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int,int>table;for(int i=0;i<nums.size();i++){auto it=table.find(target-nums[i]);if(it!=table.end()){return {it->second,i};}table[nums[i]]=i;}return {};}
};