zoukankan      html  css  js  c++  java
  • [LintCode] 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.

     Notice

    You may assume that each input would have exactly one solution

    Example

    numbers=[2, 7, 11, 15], target=9

    return [1, 2]

    Challenge 

    Either of the following solutions are acceptable:

    • O(n) Space, O(nlogn) Time
    • O(n) Space, O(n) Time

    LeetCode上的原题,请参见我之前的博客Two Sum

    class Solution {
    public:
        /*
         * @param numbers : An array of Integer
         * @param target : target = numbers[index1] + numbers[index2]
         * @return : [index1+1, index2+1] (index1 < index2)
         */
        vector<int> twoSum(vector<int> &nums, int target) {
            unordered_map<int, int> m;
            for (int i = 0; i < nums.size(); ++i) m[nums[i]] = i;
            for (int i = 0; i < nums.size(); ++i) {
                int t = target - nums[i];
                if (m.count(t) && m[t] != i) {
                    return {i + 1, m[t] + 1};
                }
            }
            return {};
        }
    };
  • 相关阅读:
    forkjoinpool
    json path
    如何处理json字符串
    ios如何快速转型安卓开发-专题3
    ios如何快速转型安卓开发-专题1
    framework创建及接入方式
    Cocoapods包管理
    cf 1102 B
    夜深人静写题解--杭电第五场
    夜深人静写题解--牛客第六场
  • 原文地址:https://www.cnblogs.com/grandyang/p/5880287.html
Copyright © 2011-2022 走看看