教えてほしいこと
- LeetCodeの3Sum Closestの問題の解釈
現在の状況
LeetCodeの3Sum Closetの問題を解いています。
しかし、問題の解釈が違うのか、テスト結果が間違っています。
私の解釈では、「numsの中でtargetに近い3つの値の合計を求める」問題だと思っています。
以下のテストケースの場合、targetの-2に近い、0、0、-4の合計(-4)が解だと思っています。
しかし、実際には-2という結果をLeetCodeは求めています。
なぜ、-2という結果を求めているのか教えてほしいです。
3Sum Closet:https://leetcode.com/problems/3sum-closest/
発生している問題・
Input nums = [4,0,5,-5,3,3,0,-4,-5] target = -2 Use Testcase Output -4 Expected -2
ソースコード・
class Solution { public: int threeSumClosest(vector<int>& nums, int target) { std::multimap<int,int> m; int i=0; int fardiff=0; int sum=0; for(;i<3;i++){ m.insert(std::make_pair(std::abs(nums[i]-target),nums[i])); if(std::abs(nums[i]-target)>fardiff) fardiff=std::abs(nums[i]-target); } for(;i<nums.size();i++){ if(std::abs(nums[i]-target)>fardiff) continue; m.erase(m.lower_bound(fardiff)); m.insert(std::make_pair(std::abs(nums[i]-target),nums[i])); fardiff=std::abs(nums[i]-target); for(auto itr = m.begin(); itr != m.end(); itr++) { if(itr->first>fardiff) fardiff=itr->first; } } for(auto itr = m.begin(); itr != m.end(); itr++) { sum+=itr->second; } return sum; } };
LeetCodeの3Sum Closet のURLを示しておくれ
# 0,-5,3 で -2 になるよ
https://leetcode.com/problems/3sum-closest/
URLです。
0,-5,3の組み合わせで-2になるのはわかるのですが、なぜその3つになるのでしょうか?
-2に最も近いから。
すみません。自己解決しました。
ありがとうございました。
回答1件
あなたの回答
tips
プレビュー