アルゴリズムの意図的な練習-LeetCode戦闘最寄りの3 05-の数と

タイトル:最も近い数の三及び

リンク:(https://leetcode-cn.com/problems/3sum-closest/)
この質問と書き、自分の昨日、「3との数が」似ていますが、個人的にはそれよりも簡単であると感じています。特別な文と同じ要素の排除がないため、それが複雑ではありません。
可変差分ANSとターゲットを記録し、その後、絶対値が更新できANS ANSよりも小さい場合には、二つのポインタ三の目標数との差の絶対値の決意を使用し続けるには:個人的な考えは、これがあります。コードは以下の通りであります:

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        sort(nums.begin(), nums.end());
        int ans = 1000000 ;
        int len = nums.size();
        for(int i = 0; i < len - 2; i++)
        {
            int L = i + 1, R = len - 1;
            while(L < R)
            {
                int sum = nums[i] + nums[L] + nums[R];
                if(sum == target) return target;
                else if(sum < target)
                {
                    if(target - sum < abs(ans)) ans = sum - target;
                    L++;
                }
                else
                {
                    if(sum - target < abs(ans)) ans = sum - target;
                    R--;
                }
            }
        }
        return ans + target;
    }
};

次の実装:
ここに画像を挿入説明
余談
勇敢である:あなたが開始されていないとき、すでに彼らは失うことになる知っているが、あなたはまだそれをしたい、とにかく最後にそれを貼り付けます。あなたはめったに勝てませんが、時々 。
-ハーパー・リー

公開された16元の記事 ウォンの賞賛0 ビュー284

おすすめ

転載: blog.csdn.net/DZZ18803835618/article/details/104667603