leetcode18. 四数之和
生活随笔
收集整理的這篇文章主要介紹了
leetcode18. 四数之和
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
給定一個(gè)包含?n 個(gè)整數(shù)的數(shù)組?nums?和一個(gè)目標(biāo)值?target,判斷?nums?中是否存在四個(gè)元素 a,b,c?和 d?,使得?a + b + c + d?的值與?target?相等?找出所有滿(mǎn)足條件且不重復(fù)的四元組。
注意:
答案中不可以包含重復(fù)的四元組。
示例:
給定數(shù)組 nums = [1, 0, -1, 0, -2, 2],和 target = 0。
滿(mǎn)足要求的四元組集合為:
[
? [-1, ?0, 0, 1],
? [-2, -1, 1, 2],
? [-2, ?0, 0, 2]
]
思路,兩層循環(huán)選出兩個(gè)數(shù)字,對(duì)剩下的數(shù)字跑雙指針。
三數(shù)之和
class Solution {public List<List<Integer>> fourSum(int[] nums,int target) {List<List<Integer>> listArr=new ArrayList<>();int len=nums.length;int left,right;Arrays.sort(nums);for(int i=0;i<len;++i){if(i>0 && nums[i] == nums[i-1]) continue;for(int j=i+1;j<len;++j){if(j>i+1 && nums[j] == nums[j-1]) continue;left=j+1;right=len-1;while(left<right) {int four=nums[left]+nums[right]+nums[i]+nums[j];if(four>target){right--;}else if(four<target){left++;}else{listArr.add(Arrays.asList(nums[i],nums[j],nums[left],nums[right]));while(left<right && nums[left]==nums[left+1])left++;while(left<right && nums[right]==nums[right-1])right--;left++;right--;}}}}return listArr;} }?
總結(jié)
以上是生活随笔為你收集整理的leetcode18. 四数之和的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《口袋妖怪日月》新增招式威力及数据资料百
- 下一篇: 虚拟世界中能配得上凤姐的七个男人