• 暴力解法容易超时;
  • 定义multiset存放数组;
  • 判断当前遍历值和set内已有元素之和是否满足条件;
  • 如果找到满足要求的元素,返回该元素和当前遍历值;
  • 否则,将当前遍历值加入set;
  • 遍历完后,没有满足条件,返回空数组。
class Solution {
public:
    vector<int> FindNumbersWithSum(vector<int> array,int sum) {
        unordered_multiset<int> set;
        for (int i = 0; i < array.size(); i++) {
            auto iter = set.find(sum - array[i]);
            if (iter != set.end()) {
                return {*iter, array[i]};
            }
            set.insert(array[i]);
        }
        return {};
    }
};