码迷,mamicode.com
首页 > 其他好文 > 详细

Two Sum

时间:2016-05-04 14:34:58      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

这道题有三种解法:

1.暴力求解,用两层for循环,遍历所有可能的情况,时间复杂度是O(n2)

2.现将数组排序,头尾各设置一个指针,左右两边夹逼寻找,但是这道题要返回的是数的索引,所以这种方式不太合适

3.使用hash的方式,将hash的关键字设置为数组元素,关键字对应着数组元素的索引(要注意hash的关键字不能出现重复的情况)

**还要注意返回的数组索引,必须有先后顺序,即由小到大

vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> result;
        unordered_map<int,int> number;
        
        for(int i=0;i<nums.size();i++)
        {
            int gap=target-nums[i];
            if(number.find(gap)!=number.end())
            {
                result.push_back(number[gap]);
                result.push_back(i);
                return result;
            }
            if(number.find(nums[i])==number.end())
                number[nums[i]]=i;
        }
        
        return result;
    }

 

Two Sum

标签:

原文地址:http://www.cnblogs.com/summerkiki/p/5458268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!