LeetCoder 16 3Sum Closest
来源:互联网 发布:国泰君安快期交易软件 编辑:程序博客网 时间:2024/05/01 08:52
题意
给定一个数组,然后一个
思路
解法一:
暴力枚举三个数,然后寻找答案,时间复杂度
解法二:
对数组先排序,枚举两个数之后,二分查找第三个数,时间复杂度
解法三:
对数组先排序,枚举一个数,其对应下标为
sum<target
说明和太小,那么j 需要增加sum>target
说明和太大,那么k 需要增加sum==target
说明最佳答案已经找到,直接跳出循环返回答案即可
结果
Your runtime beats 88.24 % of swift submissions
代码
class Solution { func threeSumClosest(_ nums: [Int], _ target: Int) -> Int { let len = nums.count var ans = 0 var dis = Int.max if len < 3 { return ans } var tempNums = nums tempNums.sort() for i in 0..<len - 2 { if i != 0 && tempNums[i] == tempNums[i - 1]{ continue } var j = i + 1 var k = len - 1 while j < k { let sum = tempNums[i] + tempNums[j] + tempNums[k] - target let absSum = abs(sum) if absSum < dis { dis = absSum ans = tempNums[i] + tempNums[j] + tempNums[k] } if sum < 0 { j += 1 } else if sum > 0 { k -= 1 } else { break } } if dis == 0 { break } } return ans }}
0 0
- LeetCoder 16 3Sum Closest
- LeetCoder 15. 3Sum
- #16 3Sum Closest
- 16 3Sum Closest
- #16 3Sum Closest
- 16 3Sum Closest
- 16 3Sum Closest
- 16 3Sum Closest
- 16 3Sum Closest
- 16 - 3Sum Closest
- 【16】3Sum Closest
- 16 3sum closest
- LeetCoder 解题报告 3Sum
- LeetCode 16: 3Sum Closest
- LeetCode 16: 3Sum Closest
- leetcode 16 3Sum Closest
- [leetcode 16] 3Sum Closest
- Leetcode【16】:3Sum Closest
- Java多线程/并发25、Exchanger线程数据交换
- Hibernate_映射_关联关系_多对多映射2
- win10 opencv 项目程序移植到 ubuntu16.04: 3.项目自启动和修改分辨率
- 电脑组装之前期摸索一
- 总结String类字符串与其他类型的转换
- LeetCoder 16 3Sum Closest
- 标准对话框
- JavaScript之对象
- 阿里云ECS+CentOS 7.0+Docker+Redmine环境搭建
- requestDispatcher和sendRedirect的区别和联系
- Java泛型_下限_super
- 安全管理·十七
- 55. Jump Game
- Java笔试题解(3)