数据结构算法操作试题(C++/Python)——最接近的三数之和

文章目录


数据结构算法操作试题(C++/Python):数据结构算法操作试题(C++/Python)——目录


1. 题目

leetcode 链接:https://leetcode-cn.com/problems/3sum-closest/comments/

在这里插入图片描述

2. 解答

python : 108ms, 13MB, 92%

class Solution:
    def threeSumClosest(self, nums: List[int], target: int) -> int:
        nums.sort()
        if sum(nums[-3:]) <= target:
            return sum(nums[-3:])
        if sum(nums[:3]) >= target:
            return sum(nums[:3])
        pre_flag = "flag"
        flag = pre_sum_val = sum_val = first_flag = 0
        for i in range(len(nums) - 2):
            start = i + 1
            end = len(nums) - 1
            while start < end:
                sum_val = nums[start] + nums[end] + nums[i]
                if sum_val > target:
                    end -= 1
                    flag = 0
                elif sum_val < target:
                    start += 1
                    flag = 1
                else:
                    return target
                if pre_flag != flag and pre_flag != "flag":
                    if not first_flag:
                        minDis = self.judgeAbs(sum_val, pre_sum_val, target)
                        first_flag = 1
                    minDis = self.judgeAbs(self.judgeAbs(sum_val, pre_sum_val, target), minDis, target)
                    pre_flag = "flag"
                else:
                    pre_flag = flag
                    pre_sum_val = sum_val
        return minDis
    
    def judgeAbs(self, sum_1, sum_2, target):
        return sum_2 if abs(sum_1 - target) >= abs(sum_2 - target) else sum_1

其他方法看 leetcode 链接 评论区~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值