陣列之和系列

2021-09-16 22:17:49 字數 1745 閱讀 5629

給出乙個陣列,求其中三個數之和為零的集合

examples

input

[-1, 0, 1, 2, -1, -4]

output

[[-1, 0, 1],

[-1, -1, 2]

]

一開始嘗試的很多方法,想bsp回溯,雙指標移動等等,都沒有用,複雜度都是o(n³),最後想到了以前程式設計書上的二分法,在這裡也是發篇文章記錄下怕自己忘記

class solution 

vectortemp;

// sort

sort(nums.begin(), nums.end());

for (int i = 0; i < nums.size() - 2; i++)

int target = -nums[i];

int low = i + 1, high = nums.size() - 1;

// binary serch

while (low < high)

while (low < high && nums[low] == nums[low + 1])

low++;

high--;

} else if (cursum > target)

high--;

} else

low++;}}

}return result;

}};

給出乙個陣列,求其中最接近目標數的三數之和

examples

input

[-1, 2, 1, -4]

1output

2 (-1 + 2 + 1 = 2).

理解了第一題,這道題也差不多了,不重複寫了只貼**

class solution  else if (sum < target)  else 

if (closedif > dif) }}

return closesum;

}};

給出乙個陣列,求其中最接近目標數的四數之和

examples

input

[1, 0, -1, 0, -2, 2]

0output

[[-1, 0, 0, 1],

[-2, -1, 1, 2],

[-2, 0, 0, 2]

]

理解了前面兩題,這道題也差不多了,不重複寫思路了,值得注意的是,這裡可以採用集合來改善**和降低複雜度o(n³ × log n)->o(n³)

vector> foursum(vector& nums, int target)  else if (sum < target)  else }}

}return vector> (set.begin(), set.end());

}

Leetcode 陣列之和系列

leetcode 1.兩數之和 方法1 排序 查詢 方法2 雜湊法 class solution def twosum self,nums list int target int list int sum 0 m for i in range len nums sum nums i if targe...

子陣列之和

給定乙個含有n個元素的整形陣列a,再給定乙個和sum,求出陣列中滿足給定和的所有元素組合,舉個例子,設有陣列a 6 sum 10,則滿足和為10的所有組合是 注意,這是個n選m的問題,並不是兩兩組合問題。最直觀的想法就是窮舉,把陣列中元素的所有組合情況都找出來,然後看看哪些組合滿足給定的和即可,這種...

陣列 三數之和

給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 請你找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 思路 1.先判斷...