class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { map<int,int> a;//提供一对一的hash vector<int> b(2,-1);//用来承载结果,初始化一个大小为2,值为-1的容器b for(int i=0;i<nums.size();i++) { if(a.count(target-nums[i])>0) { b[0]=a[target-nums[i]]; b[1]=i; break; } a[nums[i]]=i;//反过来放入map中,用来获取结果下标 } return b; }; };
分析:
这个题除了暴力法,我能想到就是排序后搜索,算法复杂度nlogn。然后看网上说用空间换时间,也就是哈希表结构。。。
map要好好熟悉熟悉。