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 {};
        }
    };
  • 相关阅读:
    【C++】基础及引用
    gradle打包分编译环境
    gradle
    MediaPlayer滑动不准的问题
    python初步入门
    音频播放服务
    《深入理解Android2》读书笔记(二)
    缓存(LruCache)机制
    handler机制
    监听网络状态
  • 原文地址:https://www.cnblogs.com/grandyang/p/5880287.html
Copyright © 2011-2022 走看看