刷题的日常[Leetcode]——16)3 Sum Closet

题目描述:

从一个list里找出三个数,和与target最接近

注意:

和15题一样,不过题目规定了有唯一解

重点是返回值是和,判断条件应该是和与target的差值

class Solution(object):
    def threeSumClosest(self, nums, target):
		nums.sort()
		i=0
		smin=2147483647
		while i<len(nums)-2:
			j=i+1;k=len(nums)-1
			while j<k:
				s=nums[i]+nums[j]+nums[k]
				#print i,j,k,abs(s-target),s
				#print i,j,k,s-target
				if abs(s-target)<abs(smin-target):
					smin=s
					#print smin
				if s==target:
					return s
				elif s<target:
					t=j
					while nums[t]==nums[j] and t<k:
						t+=1
					j=t
				elif s>target:
					t=k
					while nums[t]==nums[k] and t>j:
						t=t-1
					k=t
			i+=1
			
		return smin
		

if __name__=="__main__":
	sol=Solution()
	nums=[1,1,1,0]
	target=100
	print sol.threeSumClosest(nums,target)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值