【Leetcode】two sum

来源:互联网 发布:数据分析ppt图片 编辑:程序博客网 时间:2024/06/05 11:43

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].
方法1:复杂度O(N^2)
class Solution {public:    vector<int> twoSum(vector<int>& nums, int target) {        vector<int> res;        for(int i=0;i<nums.size();i++){            for(int j=i+1;j<nums.size();j++){                if(nums[j]+nums[i]==target){                    res.push_back(i);                    res.push_back(j);                }            }        }        return res;    }};

方法2:复杂度O(N)  用unordered_map来实现。与map差不多,就是散列shi的存储方式。unordered_map::count() 返回指定元素出现的次数。
class Solution {public:    vector<int> twoSum(vector<int>& nums, int target) {          unordered_map<int,int>maps;        vector<int> res;        for(int i=0;i<nums.size();i++)        {            maps[nums[i]]=i;        }        for(int i=0;i<nums.size();i++)        {            int s=target-nums[i];            if(maps.count(s)&&maps[s] !=i){                res.push_back(i);                res.push_back(maps[s]);                break;            }        }        return res;    }};

0 0
原创粉丝点击