国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

LeetCode之路——3Sum

2019-11-06 06:15:51
字體:
來源:轉載
供稿:網友

題目要求:給一個整數數組,找出數組中三個數的和為0,不能有重復的結果。 思路:先將數組排序,掃描數組,找出和為0-nums[i]的,過程中跳過相同的結果。 貼上代碼:

package leetcode;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class ThereSum15 { public static void main(String[] args) { int[] nums = {-1, 0, 1, 2, -1, -4}; Solution_TS ts = new Solution_TS(); System.out.PRintln(ts.threeSum(nums)); }}class Solution_TS { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> res = new ArrayList<>(); Arrays.sort(nums);//排序 for (int i = 0; i + 2 < nums.length; i++) { if (i > 0 && nums[i] == nums[i - 1]) { // 跳過相同的 continue; } int j = i + 1, k = nums.length - 1;//從前后掃描 int target = 0-nums[i];//求兩個數的和為0-nums[i] while (j < k) { if (nums[j] + nums[k] == target) { res.add(Arrays.asList(nums[i], nums[j], nums[k])); j++; k--; while (j < k && nums[j] == nums[j - 1]) j++; // 跳過相同的 while (j < k && nums[k] == nums[k + 1]) k--; // 跳過相同的 } else if (nums[j] + nums[k] > target) { k--; } else { j++; } } } return res; }}

總結:分析問題,將問題分解成小的問題域,再求解!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 延吉市| 永定县| 松原市| 肥乡县| 区。| 唐山市| 晋中市| 和林格尔县| 淮安市| 喀喇| 松溪县| 武定县| 贵德县| 新平| 惠安县| 龙游县| 龙井市| 峨山| 平遥县| 东至县| 泗阳县| 济南市| 潞西市| 于都县| 长阳| 锡林浩特市| 晋州市| 高密市| 乌兰县| 红河县| 南部县| 渭南市| 咸阳市| 安康市| 凤台县| 库车县| 白山市| 通江县| 东乡族自治县| 甘孜| 读书|