中易网

找出数组s中三个数使其之和最接近一个给定的数,用python

答案:2  悬赏:80  
解决时间 2021-01-12 17:15
  • 提问者网友:萌卜娃娃
  • 2021-01-12 14:01
找出数组s中三个数使其之和最接近一个给定的数,用python
最佳答案
  • 二级知识专家网友:鱼忧
  • 2021-01-12 14:22
由数组:,,,,那么,第组的三个数是,三个数的和即可得出. 解:由题意得出:,;答:第组的三个数之和是. 此题考查了数字变化规律,从数组中找出规律是解题关键.
全部回答
  • 1楼网友:像个废品
  • 2021-01-12 14:45
class Solution(object):
    def threeSumClosest(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        nums.sort();                        #先排序
        length = len(nums);
        min = float('inf');                 #最小差值初始化为正无穷
        result = 0;
        for i in range(length - 2):         #只需遍历到倒数第三个数
            now_num = nums[i];
            left = i + 1;
            right = length - 1;
            while left < right:             #左指针和右指针相遇时结束一轮循环
                left_num = nums[left];
                right_num = nums[right];
                threeSum = now_num + left_num + right_num;
                error = target - threeSum;  #目标值和当前三个数和的差
                if error == 0:              #刚刚好相等,直接返回目标值
                    return target;
                elif error > 0:             #三个数的和偏小,左指针右移
                    left += 1;
                    if error < min:
                        min = error;
                        result = threeSum;
                else:                       #三个数的和偏大,右指针左移
                    right -= 1;
                    if -error < min:
                        min = -error;
                        result = threeSum;
        return result;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息