zoukankan      html  css  js  c++  java
  • LeetCode——two sum

    Question

    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

    Solution

    哈希,已知一个数,去哈希表查找另外一个数。

    Code

    class Solution {
    public:
        vector<int> twoSum(vector<int> &numbers, int target) {
            map<int, int> table;
            vector<int> res;
            for (int i = 0; i < numbers.size(); i++) {
                int remain = target - numbers[i];
                if (table.find(remain) != table.end()) {
                    int one = i + 1;
                    int two = table.find(remain)->second + 1;
                    if (one > two) {
                        int tmp = one;
                        one = two;
                        two = tmp;
                    }
                    res.push_back(one);
                    res.push_back(two);
                    return res;
                }
                table[numbers[i]] = i;
            }
            return res;
        }
    };
    
  • 相关阅读:
    Ubuntu下cc和gcc的关系
    Ubuntu下makefile的简单使用
    Ubuntu下配置Apache以及搭载CGI
    Easy C 编程 in Linux
    Ubuntu下配置GitHub
    Ubuntu学习之路2
    Ubuntu下配置Java环境
    Vim学习之路1
    将博客搬至CSDN
    ubuntu连接手机的方法
  • 原文地址:https://www.cnblogs.com/zhonghuasong/p/7609768.html
Copyright © 2011-2022 走看看