vector<int> twoSum(vector<int>& nums, int target){ unordered_map<int, int> m; for (int i = 0; i < nums.size(); ++i) { auto p = m.find(nums[i]); if (p == m.end()) { m.insert({target-nums[i], i}); } else { return {i, p -> second}; } } return {}; }
注:
这里使用了 C++ 11的新特性列表初始化 (initialiser_list),可以用花括号来初始化vector、作为函数参数使用、直接返回。例如:
1 2 3 4 5 6 7 8
// 初始化 std::vector<std::string> words = {"the", "mortar", "holding", "code", "together"};