两数之和

来源:互联网 发布:快牙软件下载 编辑:程序博客网 时间:2024/06/01 08:21

问题描述:给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。

样例:给出 numbers = [2, 7, 11, 15], target = 9, 返回 [1, 2].

解题思路:给出一个特定的值,在两个数组中找到它的加数,并且第一个数组当中的元素下标小于第二个数组当中的元素的下标。第一反应是可以写两个for 循环来实现,而且第一个数组的元素下标要小于第二个数组元素的下标,因此第二个for 循环可以从i+1开始,以节约时间。

实现代码:

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) {
        // write your code herev
         vector<int> out;  
        for(int i=0;i<nums.size();i++)  
          {  
              for(int j=i+1;j<nums.size();j++)  
             {  
              if(nums[i]+nums[j]==target)  
              {
                  out.push_back(i+1);  
                  out.push_back(j+1);        
              }  
             }  
          }  
          return out;  
    }
};

做题感想:要注意细节,vector 中的指针与元素下标之间的关系。

原创粉丝点击