找出数组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;
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;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息