最接近的三數之和(給定一個包括 n 個整數的數組 nums 和 一個目標值 target。找出 nums 中的三個整數, 使得它們的和與 target 最接近。返回這三個數的和)


例如,給定數組 nums = [-1,2,1,-4], 和 target = 1.
與 target 最接近的三個數的和為 2. (-1 + 2 + 1 = 2).

思路:首先對數組進行排序       Arrays.sort(arr);

將前三個數相加賦給closeNum,表示初始化     int closeNum = arr[0] + arr[1] + arr[2];

在第一層循環中for(int i = 0;i<arr.length;i++),我們定義雙指針就j和k,j指向當前i的下一個元素,k指向末尾元素,計算三數之和並且賦給tmp,int tmp = arr[i]+arr[j]+arr[k];    判斷Math.abs(tmp - t) 和 Math.abs(closeNum - t)的大小,前者小,將前者賦給初始變量closeNum;之后判斷tmp和目標值t的大小,大於 k--;小於j++,等於 直接返回tmp

代碼如下:

public static int threeSumClosest(int[] arr,int t) { Arrays.sort(arr); int closeNum = arr[0] + arr[1] + arr[2]; for(int i = 0;i<arr.length - 2;i++) { int j = i+1; int k = arr.length - 1; while(j<k) { int tmp = arr[i]+arr[j]+arr[k]; if(Math.abs(tmp - t) < Math.abs(closeNum - t)) { closeNum = tmp; } if(tmp < t) { j++; }else if(tmp > t) { k--; }else { return tmp; } } } return closeNum; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 target  的那 兩個 整數,並返回它們的數組下標。 php 獲取兩個給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。 刷題:給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。 用js方法給定一個整數數組nums和一個目標值target,在該數組中找出和為目標值的那兩個整數,並返回他們的下標 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數組中同樣的元素。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 給定一個整數數組 nums 和一個目標值 target,求nums和為target的兩個數的下表 給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數 例如給定nums = [2,7,11,15],target = 9 Leetcode練習(Python):數組類:第34題:給定一個按照升序排列的整數數組 nums,和一個目標值 target。找出給定目標值在數組中的開始位置和結束位置。 你的算法時間復雜度必須是 O(log n) 級別。 如果數組中不存在目標值,返回 [-1, -1]。
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM