如何使用 C# 找到所有接近于零的唯一四元组?
简单的方法是我们可以创建四个嵌套循环并一一检查所有四个元素的总和是否为零。如果四个元素的总和为零,则打印元素。
时间复杂度-O(n4)
空间复杂度-O(1)
我们可以使用无序集合数据结构来存储数组的每个值。Set提供了在O(1)时间内搜索元素的好处。因此,对于数组中的每一对,我们将查找集合中可能存在的它们总和的负数。如果找到这样的元素,那么我们可以打印三元组,这将是一对整数及其总和的负值。
时间复杂度-O(n3)
空间复杂度-O(n)
示例
public class Arrays{
public List> FourSum(int[] nums){
List> res = new List>();
if (nums == null ||nums.Length== 0){
return null;
}
int[] newNums = nums.OrderBy(x => x).ToArray();
for (int i = 0; i < newNums.Length; i++){
for (int j = i; j < newNums.Length; j++){
int left = j + 1;
int right =newNums.Length- 1;
while (left < right){
int sum = newNums[i] + newNums[j] + newNums[left] + newNums[right];
if (sum == 0){
List sums = new List();
sums.Add(newNums[i]);
sums.Add(newNums[j]);
sums.Add(newNums[left]);
sums.Add(newNums[right]);
res.Add(sums);
int leftValue = newNums[left];
int rightValue = newNums[right];
while (left left && right == nums[right]){
right--;
}
}
else if (sum < 0){
left++;
}
else{
right--;
}
}
while (j + 1 输出结果[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练