LeetCode 16 最接近的三数之和
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 16 最接近的三数之和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
https://leetcode-cn.com/problems/3sum-closest/
解決方案
class Solution {public int threeSumClosest(int[] nums, int target) {int n = nums.length;Arrays.sort(nums);int abs = Integer.MAX_VALUE;int ans = 0;for (int i = 0; i < n - 2; i++) {if (i > 0 && nums[i] == nums[i - 1]) continue;for (int j = i + 1; j < n - 1; j++) {if (j > i + 1 && nums[j] == nums[j - 1]) continue;int target0 = -nums[i] - nums[j] + target;int l = j + 1, r = n - 1;while (l <= r) {int mid = (l + r) >> 1;int sub = target0 - nums[mid];if (Math.abs(sub) < abs) {ans = nums[i] + nums[j] + nums[mid];abs = Math.abs(sub);}if (sub < 0) {r = mid - 1;} else if (sub > 0) {l = mid + 1;} else {return target;}}}}return ans;} }總結
以上是生活随笔為你收集整理的LeetCode 16 最接近的三数之和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 14 最长公共前缀
- 下一篇: LeetCode 17 电话号码的字母组