博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] 16. 3Sum Closest_Medium tag: Array, Two pointers
阅读量:5101 次
发布时间:2019-06-13

本文共 1384 字,大约阅读时间需要 4 分钟。

Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would have exactly one solution.

Example:

Given array nums = [-1, 2, 1, -4], and target = 1.The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

这个题目跟很类似,但是有target,然后要最接近的,所以还是用two pointers去得到每个num 之后的pair,使得他们的sum最接近target,然后取所有sum中最接近的sum.

class Solution:    def 3sumClosest(self, nums, target):        ans, dif, n = None, None, len(nums)        nums.sort()        for i in range(n - 2):            total = nums[i] + self.helper(nums, i + 1, n - 1, target - nums[i])            localDif = abs(total - target)            if dif is None or localDif < dif:                    dif, ans = localDif, total        return ans    def helper(self, nums, start, end, target):        ans, dif = None, None        while start < end:            total = nums[start] + nums[end]            if total == target:                return total            elif total < target:                localDif = target - total                start += 1            elif total > target:                localDif = total - target                end -= 1            if dif is None or localDif < dif:                dif, ans = localDif, total        return ans

 

转载于:https://www.cnblogs.com/Johnsonxiong/p/10978822.html

你可能感兴趣的文章
Spring Boot 依赖包讲解
查看>>
C++类成员空间分配和虚函数表
查看>>
关于微信隐藏分享按钮的心得
查看>>
Weave 网络结构分析 - 每天5分钟玩转 Docker 容器技术(64)
查看>>
第一章-操作系统概论
查看>>
Java: RandomAccessFile
查看>>
Linux Performance Observability Tools
查看>>
Oracle约束
查看>>
lvm笔记
查看>>
【组成原理】概述
查看>>
jvm中的新生代Eden和survivor区
查看>>
Python + Selenium 自动发布文章(一):开源中国
查看>>
iOS 如何获取屏幕大小
查看>>
求最小环
查看>>
[HTML5] a tag, rel="noopener"
查看>>
RSA算法(二)
查看>>
增加ssh无密码信任连接的安全性
查看>>
Lyndon Word学习笔记
查看>>
P3388 【模板】割点(割顶)
查看>>
洛谷P3379 【模板】最近公共祖先(LCA)(树链剖分)
查看>>