zoukankan      html  css  js  c++  java
  • Leet Code 16.最接近的三数之和

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

    思路

    可以借鉴上题的循环方式,双指针法。每次判断三个数之和与target的绝对值是否最小,是最小则返回之和,否则继续遍历。如果三数和小于target,就可以将左指针后移,同理,如果三数和大于target,就可以将右指针前移。

    提交代码

    import java.util.*;
    import static java.lang.Math.min;
    
    public class leetcode {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();
            String str = scan.nextLine();
            int[] nums = new int[n];
            for(int i = 0; i < n; i++) {
                nums[i] = scan.nextInt();
            }
            int target = scan.nextInt();
            int result= threeSumClosest(nums, target);
            System.out.println(result);
        }
    
        public static int threeSumClosest(int[] nums, int target) {
            int len = nums.length;
            Arrays.sort(nums);
            int ans = nums[0]+nums[1]+nums[2];
            for(int i = 0; i<len; i++) {
                int L = i+1;
                int R = len-1;
                while (L < R) {
                    int sum = nums[i] + nums[L] + nums[R];
                    if(Math.abs(ans-target) > Math.abs(sum-target)) {
                        ans = sum;
                    }
                    int diff = sum - target;
                    if(diff == 0) {
                        return target;
                    }
                    else if (diff < 0) {
                        L++;
                    }
                    else if (diff > 0) {
                        R--;
                    }
                }
            }
            return ans;
        }
    }
    

    小结

    纠结了一会初始值为多少,题目应该是确定nums.length>=3的,所以初始值可以为nums[1]+nums[2]+nums[3]

  • 相关阅读:
    打包成exe可执行文件的方法
    Html 重要单词归纳
    python基础---递归函数 知识点自查填空题
    python基础---内置函数 和 匿名函数 知识点自查填空题
    python基础---递归函数真题解析
    python 日记 day4。
    python 日记 day5 字典
    python 日记 day3
    python 日记 day4
    python 日记 day1
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12625095.html
Copyright © 2011-2022 走看看