給定乙個包含 n 個整數的陣列 nums 和乙個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d ,使得 a +b + c + d 的值與 target 相等?找出所有滿足條件且不重複的四元組。
注意:答案中不可以包含重複的四元組。
示例:給定陣列 nums = [1, 0, -1, 0, -2, 2],和 target = 0。
滿足要求的四元組集合為: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ]
static list> lists;
public static list> foursum(int nums, int target)
//先做排序,方便後面判斷
arrays.sort(nums);
lists = new arraylist>();
for (int i = 0; i < nums.length - 3; i++)
for (int j = i + 1; j < nums.length - 2; j++)
int res = target - nums[i] - nums[j];
//當i,j確定時算一下當前最大最小值
int maxv = nums[nums.length - 2] + nums[nums.length - 1];
int minv = nums[j + 1] + nums[j + 2];
//如果當前最小值都大於目標值或者當前最大值都小於目標值就不必再往下走了
if (maxv <= res || minv >= res) else if (minv == res)
continue;
}//從兩端往中間夾逼
int left = j + 1;
int right = nums.length - 1;
while (left < right) else
}} else if (nums[left] + nums[right] < res) else
}} else else
}right--;
while (left < right) else }}
}}
}return lists;
}
LeetCode 18 四數之和
給定乙個包含 n 個整數的陣列 nums 和乙個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d 使得 a b c d 的值與 target 相等?找出所有滿足條件且不重複的四元組。注意 答案中不可以包含重複的四元組。示例 給定陣列 nums 1,0,1,0,2,2 和 ...
LeetCode 18 四數之和
給定乙個包含 n 個整數的陣列nums和乙個目標值target,判斷nums中是否存在四個元素 a,b,c 和 d 使得 a b c d 的值與target相等?找出所有滿足條件且不重複的四元組。注意 答案中不可以包含重複的四元組。示例 給定陣列 nums 1,0,1,0,2,2 和 target ...
leetcode18 四數之和
def foursum nums,target numlen,res,d len nums set if numlen 4 return nums.sort 二層迴圈遍歷任意兩個元素對和存放到字典d裡並把序號存起來 for p in range numlen for q in range p 1,n...