zoukankan      html  css  js  c++  java
  • Two Sum

    Given an array of integers, find two numbers such that they add up to a specific target number.

    The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.

    You may assume that each input would have exactly one solution.

    Input: numbers={2, 7, 11, 15}, target=9
    Output: index1=1, index2=2

    思路:数据结构map,记录剩余值

    class Solution {
    public:
        vector<int> twoSum(vector<int> &numbers, int target) {
            vector<int> res;
            //check validation;
            if(numbers.empty()) return res;
            
            //check special case or bound;
            size_t n=numbers.size();
            if(n==1) return res;
            
            //general case
            unordered_map<int,int> map;
            
            int rest=0;
            for(int i=0;i<n;i++){
                //check if find the two number
                if(map.count(numbers[i])){
                    res.push_back(map[numbers[i]]);
                    res.push_back(i+1);
                    break;
                }
                //compute the number[i]'s rest
                rest = target-numbers[i];
                map[rest]=i+1;
            }
            return res;
        }
    };
  • 相关阅读:
    不使用C++ 11的整数转字符串
    1090 危险品装箱(25 分)
    C++中vector,set,map自定义排序
    D
    7-2 幼儿园数学题(29 分)
    李白打酒
    C++ string和int相互转换
    1049 数列的片段和(20)(20 分)
    11. 盛最多水的容器
    7. 整数反转
  • 原文地址:https://www.cnblogs.com/renrenbinbin/p/4418106.html
Copyright © 2011-2022 走看看