首页 > 其他 > 详细

Two Sum

时间:2016-05-04 14:33:51      阅读:310      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!