美文网首页
two-sum 问题

two-sum 问题

作者: 小码弟 | 来源:发表于2018-11-12 20:28 被阅读0次

给定一个数组和一个整型,请在找到数组中的两个下标,使得对应下标的和等于给定的整型值。小的下标在前,较大下标在后

如果数组有序就好办了,双指针向中间逼近。但是数组无序, 两重循环肯定不是好方法。换一个思路,使用hash记录值和下标, 由于可能存在重复的值,因此将数组的值作为键,对应下标作为值,这样就能保证存储的是最接近的位置。
接下来遍历数组,如果在map中找到target-A[i]的键,就返回这个键对应的值(即符合条件的下标)。

vector<int> two_sum(vector<int> numbers, int target)
{
  vector<int> res(2);
 if(numbers.size() == 0)
  return res;
  map<int, int> m;

  for(int i = 0; i<numbers.size(); ++i)
    m[numbers[i]] = i;
  
  for(int i = 0; i<numbers.size(); ++i)
   {
      int interval = target - numbers[i];
      if(m.find(interval) != m.end() && m[interval] > i)
        {
          res[0] = i+1;
          res[1] = m[interval] + 1;
          break;
        }
   }
  return res;
}

相关文章

  • two-sum 问题

    给定一个数组和一个整型,请在找到数组中的两个下标,使得对应下标的和等于给定的整型值。小的下标在前,较大下标在后 如...

  • LeetCode 1. 两数之和

    题目: 题目地址:https://leetcode-cn.com/problems/two-sum/ 问题描述: ...

  • two-sum

  • leetcode_twoSum

    题目 LeetCode: two-sum 暴力破解

  • 1.两数之和

    https://leetcode-cn.com/problems/two-sum/

  • 1-two-sum

    two-sum Given an array of integers, returnindicesof the t...

  • 1.两数之和

    https://leetcode-cn.com/problems/two-sum/

  • leetcode two-sum

    题目 给一个数组和一个和,查找出数组中两个数相加为给定的和 Given an array of integers,...

  • LeetCode-1-Two Sum

    https://leetcode.com/problems/two-sum/description/ Given ...

  • X Sums

    Two Sum It is not easy to write Two-Sum right for the fir...

网友评论

      本文标题:two-sum 问题

      本文链接:https://www.haomeiwen.com/subject/ipxhfqtx.html