java小编程----最接近的三数之和
生活随笔
收集整理的這篇文章主要介紹了
java小编程----最接近的三数之和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個包括?n 個整數的數組?nums?和 一個目標值?target。找出?nums?中的三個整數,使得它們的和與?target?最接近。返回這三個數的和。假定每組輸入只存在唯一答案。
例如,給定數組 nums = [-1,2,1,-4], 和 target = 1.
與 target 最接近的三個數的和為 2. (-1 + 2 + 1 = 2).
package com.henu.lmd;import java.util.ArrayList; import java.util.Collections; /** 給定一個包括?n 個整數的數組?nums?和 一個目標值?target。找出?nums?中的三個整數,使得它們的和與?target?最接近。返回這三個數的和。假定每組輸入只存在唯一答案。*/ public class Demo04_力扣16 {public static void main(String[] args) {int[] nums = {-1,0,3,5,9,7,8};int target = 5;int res = 0;ArrayList<Integer> list = new ArrayList<>();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++) {res = nums[i] + nums[j] + nums[k];list.add(res);}}}list.add(target);Collections.sort(list);System.out.println(list);int size = list.size();for (int i = 0; i < size; i++) {if (list.get(i) == target) {if (i == size-1) {System.out.println(list.get(i-1));}else if(i == 0) {System.out.println(list.get(i+1));}else {int start = target - list.get(i-1);int end = list.get(i+1) - target;if (start <= end) {System.out.println(list.get(i-1));}else {System.out.println(list.get(i+1));}}break;}}} }?
?
總結
以上是生活随笔為你收集整理的java小编程----最接近的三数之和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java小编程----三数之和
- 下一篇: java小编程----四数之和