• LeetCode -- 3SumCloset


    Question:

    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).

    Analysis:

    与3Sum题目比较起来,这里不需要去重检测,只需要有两个变量控制sum和与target间的差距即可。总体的策略同3Sum。

    Answer:

    public class Solution {
            public int threeSumClosest(int[] nums, int target) {
            int tar = Integer.MAX_VALUE;
            int res = 0;
            Arrays.sort(nums);
            
            for(int i=0; i<nums.length-2; i++) {
                int j = i + 1;
                int k = nums.length - 1;
                 
                while(j < k) {
                    int sum = nums[i] + nums[j] + nums[k];
                    if(sum == target)
                        return sum;
                    else {
                        int dif = Math.abs(sum - target);
                        if(dif < tar) {
                            tar = dif;
                            res = sum;
                        }
                        if(sum < target)
                            j++;
                        else
                            k--;
                    }
                }
            }
            return res;
        }
    }
  • 相关阅读:
    17-DBSCAN密度聚类
    16-K-means聚类
    15-TF-IDF
    14-支持向量机SVM
    13-感知机原理概述
    12-随机森林
    11-集成学习原理概述
    10-决策树
    9-朴素贝叶斯
    栈和队列(python)
  • 原文地址:https://www.cnblogs.com/little-YTMM/p/4793099.html
Copyright © 2020-2023  润新知