My solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
class { public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> res; for (int i=0;i<nums.size();i++){ for (int j=i+1;j<nums.size();j++){ if (nums[i]+nums[j]==target){ res.push_back(i); res.push_back(j); return res; } } } } };
|
time: 181ms
sample 9 ms submission
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
class { public: vector<int> twoSum(vector<int>& nums, int target) { using vType = remove_reference_t<decltype(nums)>::size_type; unordered_map<int,vType> m ; for (int i = 0; i < nums.size(); ++i) { const auto it = m.find(target - nums[i]); if (it != m.end()) return vector<int> {it->second,i}; m.emplace(nums[i],i); } throw std::runtime_error("no solutions:") ; } };
|
nuordered_map uses hash, which is more efficient than vector.
近期评论