1. 程式人生 > >LintCode-兩數之和

LintCode-兩數之和

題目描述:

給一個整數陣列,找到兩個數使得他們的和等於一個給定的數 target

你需要實現的函式twoSum需要返回這兩個數的下標, 並且第一個下標小於第二個下標。注意這裡下標的範圍是 1 到 n,不是以 0 開頭。

樣例:

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

做題思路:這一題比較簡單,就是用for迴圈在陣列中尋找兩個元素相加等於給定數值的元素,如果相加等於給定target,就將下標填進新的陣列中,返回新陣列。但是題目中的下標範圍是1到n,並不是0到n-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 here
    int i,j;
    vector<int> v;
    for(i=0;i<nums.size();i++)
     { for(j=i+1;j<nums.size();j++)
        { if(nums[i]+nums[j]==target)
           {v.push_back(i+1);
            v.push_back(j+1);}
        }
     }
     return v;這一題沒用到什麼新學的排序內容,就是用了單純的for迴圈來查詢,比較簡單。
    }
};

做題感想: