【leetcode每日一题】【2019-05-27】16. 最接近的三数之和
2019-05-28 11:08
453 查看
16. 最接近的三数之和
地址: https://leetcode-cn.com/problems/3sum-closest/submissions/
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
暴力法肯定是可以的,但是也肯定是超时的。
看了下解题思路
首先定位一个数字,然后找左边和右边的数字 双指针移动,可以提高效率
Python代码:
class Solution: def threeSumClosest(self, nums , target: int) -> int: nums.sort() print(nums) minnum=target min_abs=99999 for i in range(1,len(nums)-1): left=0 right=len(nums)-1 new_target=target-nums[i] while left <i and right>i : print("[%s:%s:%s]"%(i,left,right)) total=nums[i]+nums[left]+nums[right] min_abs_t=abs(target-total) print("i:%s:%s left:%s:%s right:%s:%s total:%s min_abs:%s min_abs_t:%s"%(i,nums[i],left,nums[left],right,nums[right],total,min_abs,min_abs_t)) if min_abs_t<min_abs: minnum=total min_abs=min_abs_t if target-total==0: return target elif target-total>0: left = left + 1 else: right = right - 1 return minnum
Scala代码:
object Solution { def threeSumClosest(nums: Array[Int], target: Int): Int = { scala.util.Sorting.quickSort(nums) var minnum = target var min_abs = 99999 for (i <- 1 to nums.length-1){ var left=0 var right=nums.length-1 var new_target=target-nums(i) while ( left < i && right > i ){ var total=nums(i)+nums(left)+nums(right) var min_abs_t=Math.abs(target-total) if (min_abs_t<min_abs){ minnum=total min_abs=min_abs_t } if (target-total==0){ return target }else if (target-total>0){ left = left + 1 }else{ right = right - 1 } } } return minnum } }
相关文章推荐
- Leetcode刷题38-16.最接近的三数之和(C++)
- [LeetCode] 16. 3Sum Closest 最接近的三数之和 @python
- LeetCode16-最接近的三数之和
- 16. 最接近的三数之和(leetcode Java语言)
- 【Leetcode】16. 最接近的三数之和
- LeetCode 16. 最接近的三数之和
- LeetCode 16 最接近的三数之和
- leetcode16---最接近的三数之和
- LeetCode- 16. 最接近的三数之和 (Medium)python和c++实现
- LeetCode16.最接近的三数之和
- leetcode 16. 最接近的三数之和(Java版)
- leetcode 16 最接近的三数之和
- leetcode 腾讯精选练习(50 题)16.最接近的三数之和
- LeetCode题解(python)-16. 最接近的三数之和
- LeetCode 16 C++ 最接近的三数之和
- leetcode 16 最接近的三数之和
- 【PHP解法==LeetCode查找类型问题2(N数之和)】15.三数之和 && 16.最接近的三数之和 && 18.四数之和 && 454.四数相加II
- LeetCode刷题-最接近的三数之和
- LeetCode16. python实现:最接近的三数之和问题☆☆
- LeetCode 16 3Sum Closest 找出最接近指定target的三个数的和