您的位置:首页 > 编程语言 > C语言/C++

每日进步之leetcode第16题C++实现代码(

2016-07-29 00:00 531 查看
class Solution {

public:

    int threeSumClosest(vector<int>& nums, int target) {

        sort(nums.begin(), nums.end());

        int len = nums.size();

        int closet = 1000000;

        int flag = 0;

        for(int i = 0; i < len; ++i)

        {

            int begin = i + 1;

            int end = len -1;

            while(begin < end)

            {

                int sum = nums[begin] + nums[end] + nums[i] - target;

                if(sum == 0){

                    return target;

                }else if (sum < 0)

                {

                    ++begin;

                    if(-sum < closet)

                    {

                        closet  = -sum;

                        flag = 1;

                    }

                }else

                {

                    --end;

                    if(sum < closet)

                    {

                        closet = sum;

                        flag = 0;

                    }

                }

            }

        }

        if( flag == 1)

        {

            return -closet + target;

        }else{

            return closet + target;

        }

        

    }

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: