找一個序列中三個數,其和與給定的target最接近。spa
【思路】code
仍是練習48中總結的,將題目變成2sum。blog
【my code】three
int threeSumClosest(vector<int>& num, int target) { int result=0; int sub=INT_MAX; int n=num.size(); sort(num.begin(),num.end()); for(int i=0; i<n; i++) { int j=i+1, k=n-1; while(j<k){ int cur=num[i]+num[j]+num[k]; if(cur<target){ j++; if(target-cur<sub){ sub=target-cur; result=cur; } } else if(cur>target){ k--; if(cur-target<sub){ sub=cur-target; result=cur; } } else{ sub=0; result=cur; break; } } } return result; }
注意臨時變量和最終結果的存儲。即result、sub、cur在何時賦值保存。get
雖然是現學現賣,也是值得鼓勵的。class