https://web.stanford.edu/class/cs9/lectures/04/Two-Sum.pdf

Store target - numbers[i] into map,

If numbers[i] found in the map, add into result (map[numbers[i]] + 1), (i+ 1). Not index, but the nth number.

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> &numbers, int target) {
        // write your code here
        vector<int> result;
        int size = numbers.size();
        unordered_map<int, int> map;
        for (int i = 0; i < size; i++) {
            if (map.find(numbers[i]) == map.end()) {
                map.insert({target - numbers[i], i});
            } else {
                result.push_back(map[numbers[i]] + 1);
                result.push_back(i + 1);
                return result;
            }
        }
    }
};

results matching ""

    No results matching ""