`
frank-liu
  • 浏览: 1682192 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

leetcode: 3Sum Closest

 
阅读更多

问题描述:

Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.

    For example, given array S = {-1 2 1 -4}, and target = 1.

    The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

原问题链接:https://leetcode.com/problems/3sum-closest/

 

问题分析

    这个问题的思路和前面3sum的过程很接近。就是首先对数组排序,然后取target和里面取一个数的差。再到数组里去查找比较和这个差接近的值。如果相等的话就直接返回,否则记录它们的和与target值的偏差,记录下来偏差最小的那个返回。

    详细的实现代码如下:

public class Solution {
    public int threeSumClosest(int[] nums, int target) {
        Arrays.sort(nums);
        int result = 0, dif = Integer.MAX_VALUE;
        for(int i = 0; i < nums.length - 2; i++) {
            int l = i + 1, r = nums.length - 1;
            while(l < r) {
                if(nums[l] + nums[r] == target - nums[i]) return target;
                else if(nums[l] + nums[r] < target - nums[i]) {
                    if(target - nums[i] - nums[l] - nums[r] < dif) {
                        dif = target - nums[i] - nums[l] - nums[r];
                        result = nums[l] + nums[r] + nums[i];
                    }
                    l++;
                } else {
                    if(nums[l] + nums[r] + nums[i] - target < dif) {
                        dif = nums[l] + nums[r] + nums[i] - target;
                        result = nums[l] + nums[r] + nums[i];
                    }
                    r--;
                }
            }
        }
        return result;
    }
}

     总体的时间复杂度为O(N * N)。这里要注意的是实现的细节里取的索引值的范围。

 

分享到:
评论

相关推荐

    javalruleetcode-LeetCode::lollipop:个人LeetCode习题解答仓库-多语言

    java lru leetcode :ice_cream: ...Closest 20 Valid Parentheses 26 Remove Duplicates from Sorted Array 48 Rotate Image 53 Maximum Subarray 55 Jump Game 56 Merge Intervals 64 Minimum Path Sum 73

    leetcode2sumc-leetcode:JavaScript版本leetcode中文版代码

    leetcode 2 sum c leetcode 力扣(Leetcode)编程题,JavaScript版本。 编号 中文题目 ...3Sum 中等 16 3Sum Closest 中等 17 Letter Combinations of a Phone Number DFS 中等 18 4Sum 中等 19 Remo

    leetcode中文版-leetcode:leetcode

    3sum_closest 4sum 添加二进制 添加数字 添加字符串 add_two_numbers balance_binary_tree best_time_to_buy_and_sell_stock best_time_to_buy_and_sell_stock_II binary_tree_inorder_traversal binary_tree_level_...

    leetcode338-LeetCode:LeetCode刷题总结

    LeetCode刷题总结 1.Two Sum 2.Add Two Numbers 3.Longest Substring Without Repeating Characters 4.Median of Two Sorted Arrays 5.Longest Palindromic Substring (Manacher算法待完成) 6.ZigZag Conversion 7....

    leetcode题库-LeetCode:力码

    leetcode题库 LeetCode 题解合集 本仓库展示了LeetCode题库中部分题目的解法(持续更新),所有代码均采用C++编写...3Sum.cpp 最接近的三数之和 3Sum Closest .cpp 20 有效的括号 Valid Parentheses.cpp 22 括号生成 G

    leetcode中文版-LeetCode:LeetcodeC++/Java

    leetcode中文版 LeetCode # Title Chinese Tag Solution 1 Two Sum 两数之和 array,hash ...3 ...3Sum Closest 最接近的三数之和 two pointers,array 21 Merge Two Sorted Lists 合并两个有序链表 lin

    leetcode和oj-LeetCode:力码

    leetcode 和 oj #问题列表(按标题升序) 标题|添加日期|AC 利率 ---|---|---|--- 3Sum |2012-01-17|16.4% 3Sum Closest|2012-01-18|26.8% 4Sum|2012-01-26 |21.3% 二进制加法|2012-04-02|25.6% 两个数相加|2011-11-...

    leetcode分类-leetcode:leetcode

    例如,最近的节点对(Closest Binary Search Tree Value II)考察了对二叉搜索树的理解和操作。 3. **动态规划**:动态规划是一种解决最优化问题的方法,通常涉及状态转移方程。如斐波那契数列(Fibonacci Number)...

    javalruleetcode-leetcode:leetcode问题的解决方案

    java lru leetcode Leetcode 问题的解决方案 问题 解决方案 0001_Two_Sum 0002_Add_Two_Numbers 0003_Longest_Substring_Without_Repeating_Characters ...0016_3Sum_Closest 0017_Letter_Combinations_of_a_Phone_N

    js-leetcode题解之16-3sum-closest.js

    js js_leetcode题解之16-3sum-closest.js

    lrucacheleetcode-LeetCode:这个库用于总结leetcode中遇到的习题,期望按照数据结构和常用方法分成2类,进行总结,

    lru cache ...3Sum Hash法转换2sum 9 3Sum Closest Sort +夹逼法 10 4Sum Sort +夹逼法 11 Remove Element 12 Next Permutation 公式 13 Permutation Sequence 公式 14 Valid Sudoku 15 Trapping Rain W

    gasstationleetcode-rust-leetcode:练习使用rust语言刷leetcode算法题目

    gas station ...p0016_3sum_closest; // pub mod p0018_4sum; pub mod p0003_longest_substring_without_repeating_characters; pub mod p0005_longest_palindromic_substring; pub mod p0007_reverse_int

    c语言-leetcode 0016-three-sum-closest.zip

    c c语言_leetcode 0016_three_sum_closest.zip

    leetcode答案-LeetCode_1_TwoSum:LeetCode_1_TwoSum

    答案LeetCode_1_TwoSum LeetCode 问题:给定一个整数数组,找出两个数字,使它们相加为特定的目标数字。 函数 twoSum 应该返回两个数字的索引,使它们相加为目标,其中 index1 必须小于 index2。 请注意,您返回的...

    LeetCode 刷题汇总1

    * 3Sum最近(3Sum Closest):找到数组中三个元素的和最近目标值的元素。 * 4Sum(4Sum):找到数组中四个元素的和等于目标值的元素。 这些知识点涵盖了算法设计、数据结构、数学运算、字符串操作、链表操作、栈...

    程序员面试宝典LeetCode刷题手册

    16. 3Sum Closest 17. Letter Combinations of a Phone Number 18. 4Sum 19. Remove Nth Node From End of List 20. Valid Parentheses 21. Merge Two Sorted Lists 22. Generate Parentheses 23. Merge k Sorted ...

    LeetCode最全代码

    16 | [3 Sum Closest](https://leetcode.com/problems/3sum-closest/) | [C++](./C++/3sum-closest.cpp) [Python](./Python/3sum-closest.py) | _O(n^2)_ | _O(1)_ | Medium || Two Pointers 18| [4 Sum]...

    js代码-16. 3Sum Closest

    描述中的 "3Sum Closest" 是指三数之和最接近某个特定值的问题,通常在LeetCode等在线编程平台上被讨论。 这个问题的基本设定是:给定一个整数数组 `nums` 和一个目标整数 `target`,你需要找出数组中三个整数,...

    leetcode中文版

    5. **2.1.9 3Sum Closest**:给定一个包括 n 个整数的数组 nums 和一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。 6. **2.1.10 4Sum**:给定一个包含 n 个整数的...

    leetcode2sumc-Leetcode_imp_C:Leetcode在C上的实现

    leetcode_0016_three_sum_closest.c leetcode_0018_four_sum.c : not ready leetcode_0026_remove_duplicates.c 27, 80, 283 leetcode_0031_next_permutation.c leetcode_0033_search_rotate.c : binary ...

Global site tag (gtag.js) - Google Analytics