leecode第一题(两数之和)

leecode第一题(两数之和)

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要好好熟悉熟悉。

上一篇:leecode刷题(30)-- 二叉树的后序遍历


下一篇:leecode第一百二十一题(买卖股票的最佳时机)