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 {};
        }
    };
  • 相关阅读:
    数据的安装及常识
    数据库基础
    zabbix入门
    zabbix安装报错
    https
    rewrite
    keepalived
    计算机键盘在编辑情况下键盘不见,仅能输入字母
    集成学习
    js
  • 原文地址:https://www.cnblogs.com/grandyang/p/5880287.html
Copyright © 2011-2022 走看看