两数之和

来源:互联网 发布:国家实行网络什么战略 编辑:程序博客网 时间:2024/06/16 02:40

题目:

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

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

样例

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

思路:

首先看到这个题想到的就是用for循环,将数组中的任意一个元素同它后面的元素想加,如果等于给出的target就将下标加一放入新建的一个数组中再跳出循环。

代码:

vector<int> twoSum(vector<int> &nums, int target) {
        // write your code here
        vector<int> qq;
        int n=nums.size();
        for(int i=0;i<n-1;i++)
         { for(int j=i+1;j<=n-1;j++)
          {
              if(nums[i]+nums[j]==target)
              {
                  qq.push_back(i+1);
                  qq.push_back(j+1);
                  break;
              }
          }
         }
         return qq;
    }

感想:

这个题是我接触lincode以来认为最简单的一个题,好想回到了大一上半学期做题的时候。不过这个题在理解题意上还是要注意的,下标加一放入数组。