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

    分析:在一个数组中找到两个数相加和为给定数字的下标。要注意的是下标从1开始,同时可以假设每组输入存在且只存在一组解。

    可以考虑用map存储 值-下标对。特别要注意的是要排除找到自身的情况。比如v = {3, 2, 4}, target = 6. 按照我们的思路绝对会输出[1, 1],因为对3进行找小伙伴的操作时,会find到3。为避免该情况,加入一个判断hmap[target - nums[j]] != j(line 8)

     1 class Solution {
     2 public:
     3     vector<int> twoSum(vector<int>& nums, int target) {
     4         map<int, int> hmap;
     5         vector<int> result;
     6         for(int i = 0; i < nums.size(); i++) hmap[nums[i]] = i;
     7         for(int j = 0; j < nums.size(); j++){
     8             if(hmap.find(target - nums[j]) != hmap.end() && hmap[target - nums[j]] != j){
     9                 result.push_back(j + 1);
    10                 result.push_back(hmap[target - nums[j]] + 1);
    11                 return result;
    12             }
    13         }
    14     }
    15 };
  • 相关阅读:
    mysql innodb myisam 主要区别与更改方法
    oracle双机热备概念
    oracle 查询死锁 kill 会话进程
    数据库触发器new old
    openssh 7.1升级方式
    GoldPoint(结队编程)
    四则运算
    自我介绍及目标
    WorldCount项目
    企业级应用与互联网应用的区别以及Java EE思维导图
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/4493963.html
Copyright © 2011-2022 走看看