美文网首页
携程-two sum-c++

携程-two sum-c++

作者: Jacinth | 来源:发表于2017-09-21 23:39 被阅读0次
    image.png image.png
    /*
     * twosum.cpp
     *
     *  Created on: 2017年9月21日
     *      Author: Administrator
     */
    
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <map>
    #include <string>
    #include <vector>
    #include <set>
    #include <queue>
    #include <deque>
    #include <stack>
    #include <algorithm>
    #include <unordered_map>
    using namespace std;
    
    
    /*请完成下面这个函数,实现题目要求的功能
    当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^
    ******************************开始写代码******************************/
    vector < int > twoSum(vector < int >& nums, int target) {
          int i, sum;
          vector<int> results;
          map<int, int> hmap;
          for(i=0; i<nums.size(); i++){
              if(!hmap.count(nums[i])){
                  hmap.insert(pair<int, int>(nums[i], i));
             }
             if(hmap.count(target-nums[i])){
                 int j=hmap[target-nums[i]];
                 if(j<i){
                     results.push_back(j+1);
                     results.push_back(i+1);
                     return results;
                 }
             }
         }
         return results;
    }
    /******************************结束写代码******************************/
    
    
    int main() {
        vector < int > res;
    
        int _nums_size = 0;
        cin >> _nums_size;
        cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
        vector<int> _nums;
        int _nums_item;
        for(int _nums_i=0; _nums_i<_nums_size; _nums_i++) {
            cin >> _nums_item;
            cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
            _nums.push_back(_nums_item);
        }
    
        int _target;
        cin >> _target;
        cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
    
        res = twoSum(_nums, _target);
        for(int res_i=0; res_i < res.size(); res_i++) {
            cout << res[res_i] << endl;;
        }
        return 0;
    }
    

    提交结果:
    tmap.insert()报错
    参考:
    http://www.cnblogs.com/bakari/p/4871254.html

    相关文章

      网友评论

          本文标题:携程-two sum-c++

          本文链接:https://www.haomeiwen.com/subject/duhxextx.html