two-sum 问题

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

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

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

  for(int i = 0; i i)
        {
          res[0] = i+1;
          res[1] = m[interval] + 1;
          break;
        }
   }
  return res;
}

你可能感兴趣的:(two-sum 问题)