两数之和

来源:互联网 发布:数据库原理王新梅 编辑:程序博客网 时间:2024/06/05 19:34

一、问题描述

给一个整数数组,找到两个数使得他们的和等于一个给定的数 target

你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。

 注意事项

你可以假设只有一组答案。

样例

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

二、解题思路

            定义两个数组u,v,分别存放遍历的数值和遍历数值的下标,若u中两数之和等于给定的target值,则把它对应的v中的下标插入到一个新建的向量中,返回此向量。

三、我的代码

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){
       vector<int>::iterator it;
       int flag=1;
       int u[100000];
       int v[100000];
       int i=0;
       int j,l;
       vector<int>a;
       for(it=nums.begin();it!=nums.end();it++)
       {
           u[i]=*it;
           v[i]=flag;
           i++;
           flag++;
       }
       for(j=0;j<i;j++)
       {
           for(l=j+1;l<i;l++)
           {
               if(u[j]+u[l]==target)
               {
                   a.push_back(v[j]);
                   a.push_back(v[l]);
               }
           }
       }
       return a;
   }
};

四、我的感想

       此题思想较简单,但还是要多注意细节。

原创粉丝点击