[LeetCode 016] 3Sum Closest
2016-02-17 14:49
459 查看
3Sum Closest
遍历数组nums,依次取出一个数nums[i],在
i之后的数列中找两个数最接近
target。
第一个数固定,后两个数按类似
2Sum处理。
当
sum小于
target时,需要将左边的数向右移动。
当
sum大于
target时,需要将右边的数向左移动。
设置
midDif存储最小的
difference,不断的跟新
midDif。
设置
result存储三个数的和,当
midDif更新时,
result也更新。
Implementation
public class Solution { public int threeSumClosest(int[] nums, int target) { Arrays.sort(nums); int minDif = Integer.MAX_VALUE; int result = 0; for (int i = 0; i < nums.length - 2; i++) { int left = i + 1; int right = nums.length - 1; while (left < right) { int sum = nums[i] + nums[left] + nums[right]; int dif = Math.abs(sum - target); if (dif == 0) return target; if (sum > target) { right--; } else { left++; } if (dif < minDif) { minDif = dif; result = sum; } } } return result; } }
相关文章推荐
- Unity bug 合集(1-50)
- 【算法】最短路——两点最短总权和
- maven 中的编码
- web.xml配置Servlet
- Python从json中提取数据
- java学习之工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- LVS负载均衡之基本介绍(介绍篇)
- 详解 CSS 属性 - 伪类和伪元素的区别
- Python 列表排序方法reverse、sort、sorted详解
- UITableViewCell左右侧滑动出现多个按钮
- REST_FRAMEWORK加深记忆-加了API_ROOT及超链接的CASE
- [Flex] PopUpButton系列 —— 添加按钮图标
- JavaScript中对象取值的一个主意点
- linux shell脚本自动检测apache服务是否正常的诡异问题
- java
- iOS 段落富文本使用
- 架构之路(二):性能
- Unity Shader 内置函数
- SimpleDateFormat获取时间的注意事项
- QT无标题栏窗体移动