LeetCode:最接近的三数之和【16】

LeetCode:最接近的三数之和【16】

题目描述

给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。

例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.

与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).

题目分析

  这道题就是三数之和问题的一种变形

  三数之和问题的求解策略是将三指针变为双指针问题,即固定一个指针(黑色)。每一轮移动两个蓝色指针中,不断刷新结果值

  

Java题解

class Solution {
    public int threeSumClosest(int[] nums, int target) {
        //假设某种可能情况,很大程度上不是最优的
        int res = nums[0]+nums[1]+nums[nums.length-1];
        Arrays.sort(nums);
        for(int i=0;i<nums.length-2;i++)
        {
            int start = i+1;
            int end = nums.length-1;
            while(start<end)
            {
                int sum = nums[i]+nums[start]+nums[end];
                if(sum>target)
                    end--;
                if(sum<=target)
                    start++;
                if(Math.abs(sum-target)<Math.abs(res-target))
                    res=sum;
            }
        }
        return res;
    }
}

原文地址:https://www.cnblogs.com/MrSaver/p/9497363.html

时间: 2024-10-11 03:11:52

LeetCode:最接近的三数之和【16】的相关文章

两数之和,三数之和,最接近的三数之和,四数之和

LeetCode有一系列做法套路相同的题目,N数之和就可以算一个 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 第一个解决办法,简单暴力,堆for循环就是,但

LeetCode OJ: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

[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

LeetCode16.最接近的三数之和 JavaScript

给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2). 答案参考 /** * @param {number[]} nums * @param {number} target * @return {num

[leetcode 16] 最接近的三数之和

给定一个包括n的整数数组nums,和一个目标值target.找出nums中的三个整数,使得它们的和与target最接近,返回这三个数的和.假定每次输入只存在一个答案. 示例: nums = [-1,2,1,-4] 和 target = 1 与 target 最接近的三个数的和为2. (-1+2+1=2) 代码: class Solution(object): def threeSumClosest(self,nums,target): """ :type nums: List

16.最接近的三数之和

给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2). class Solution {    public int threeSumClosest(int[] nums, int target) { 

16. 最接近的三数之和 O(N^2)

给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2). 思路就是先枚举一个数字,然后用尺取确定另外两个数字. class Solution { public: int threeSumClosest(v

每天AC系列(二):最接近的三数之和

1 题目 leetcode第16题,给定一个数组与一个目标数,找出数组中其中的三个数,这三个数的和要与目标数最接近. 2 暴力 按惯例先来一次O(n3)的暴力: int temp = nums[0]+nums[1]+nums[2]; for(int i=0;i<nums.length;++i) for(int j=i+1;j<nums.length;++j) for(int k=j+1;k<nums.length;++k) { int temp1 = nums[i]+nums[j]+nu

LeetCode 15. 3Sum(三数之和)

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. For example, given array S = [-1,