leetcode 三数之和 python_16.leetcode题目讲解(Python):最接近的三数之和
題目如下:
題目
這道題可以用排一些特殊情況,減少計算量, 參考代碼如下:
class Solution:
def threeSumClosest(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
# 如果只有3個數,那直接返回這三個數的和
if len(nums) == 3:
return sum(nums)
nums = sorted(nums)
# 如果最小的和大于目標,那返回最小的和
if sum(nums[:3]) >= target:
return sum(nums[:3])
# 如果最大的和小于目標,那返回最大的和
if sum(nums[-3:]) <= target:
return sum(nums[-3:])
cur = nums[0] + nums[1] + nums[-1]
for i in range(0, len(nums) - 2):
# 避免重復計算
if i > 0 and nums[i] == nums[i - 1]:
continue
j = i + 1
k = len(nums) - 1
while j < k:
res = nums[i] + nums[j] + nums[k]
if abs(res - target) < abs(cur - target):
cur = res
elif res == target:
return target
elif res < target:
j = j + 1
else:
k = k - 1
return cur
ps:如果您有好的建議,歡迎交流 :-D,也歡迎訪問我的個人博客:tundrazone.com
總結
以上是生活随笔為你收集整理的leetcode 三数之和 python_16.leetcode题目讲解(Python):最接近的三数之和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab图像信息熵交叉熵,【机器学习
- 下一篇: 中信银行MySQL面试_【深圳中信银行信