>0️⃣python数据结构与算法学习路线
>学习内容:
>- 基本算法:枚举、排序、搜索、递归、分治、优先搜索、贪心、双指针、动态规划等...
>- 数据结构:字符串(string)、列表(list)、元组(tuple)、字典(dictionary)、集合(set)、数组、队列、栈、树、图、堆等...
题目:
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
输入输出:
输入:nums = [-1,2,1,-4], target = 1
输出:2
解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。
解题思路:
和15题类似
算法实现:
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
l = len(nums)
nums.sort()
m = nums[0]+ nums[1]+nums[2]
for i1 in range(l):
# 不进行重复的无意义循环
if i1 > 0 and nums[i1] == nums[i1-1]:
continue
i2 = i1 + 1
i3 = l - 1
while i2 < i3:
ans = nums[i1] + nums[i2] + nums[i3]
if ans == target:
return ans
if abs(ans - target) < abs(m - target):
m = ans
if ans < target:
while i2 < i3 and nums[i2] == nums[i2+1]:
i2 += 1
i2+=1
elif ans > target:
while i2 < i3 and nums[i3] == nums[i3-1]:
i3 -= 1
i3 -=1
return m
出现问题:
1. 绝对值abs()
2. m可以设置为一个极大值,正负无穷大为float("inf"), float("-inf")