• 16. 3Sum Closest


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

    解题思路:

    找三个数相加,保证他们加起来的和与目标数最接近,返回这个和。

    1、老思路,先排序,固定第一个数,第二个数i+1,第三个数length-1。

    2、设定一个min,先求和,如果target-sum更小,更新这个min,然后把这个sum保存下来。

    3、如果taget直接等于sum,返回val,如果target更大,说明sum小了,所以第二个数就要往后挪。

     1 class Solution {
     2     public int threeSumClosest(int[] nums, int target) {
     3         
     4         if(nums.length<3||nums==null)
     5             return 0;
     6         int val=0;
     7         int min = Integer.MAX_VALUE;
     8         Arrays.sort(nums);
     9         for(int i=0;i<=nums.length-3;i++)
    10         {
    11             int low =i+1;
    12             int high = nums.length-1;
    13             
    14             while(low<high)
    15             {
    16                 int sum = nums[i]+nums[low]+nums[high];
    17                 if(Math.abs(target-sum)<min)
    18                 {
    19                     min = Math.abs(target-sum);
    20                     val = sum;
    21                 }
    22                 if(target==sum)
    23                 {
    24                     return val;
    25                 }
    26                 else if(target>sum)
    27                 {
    28                     low++;
    29                 }
    30                 else if(target<sum)
    31                 {
    32                     high--;
    33                 }
    34                 
    35                 
    36             }
    37         }
    38         return val;
    39         
    40     }
    41 }
  • 相关阅读:
    java中的lamda表达式
    Arrays.sort()中Lambda表达式
    检索中的函数及不同范围的处理
    2014.6.24
    2014.6.23
    第六天培训
    第五天培训
    第四天培训
    第三天培训!
    第二天培训
  • 原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/10827910.html
Copyright © 2020-2023  润新知