LeetCode 三數之和

2022-09-12 20:03:13 字數 969 閱讀 3380

解題思路:筆者採用map判斷重複,結果超時,原因是map是對數級時間複雜度,放在迴圈中就超時了。最佳思路是採用雙指標加排序。

/*

*超時**

* 原因:迴圈中使用map

*/class

solution

public

: vector

int>> threesum(vector&nums)

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

if (!ac[nums[i]]) );

ac2[nums[j]] = true

; }}}

init(ac2, nums);

//ac2初始化

ac[nums[i]] = true

; }

return

ans;

}};

class

solution

//c 對應的指標初始指向陣列的最右端

int third = n - 1

;

int target = -nums[first];

//列舉 b

for (int second = first + 1; second < n; ++second)

//需要保證 b 的指標在 c 的指標的左側

while (second < third && nums[second] + nums[third] >target)

//如果指標重合,隨著 b 後續的增加

//就不會有滿足 a+b+c=0 並且 bif (second ==third)

if (nums[second] + nums[third] ==target) );}}

}return

ans;

}};

leetcode 三數之和

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

LeetCode 三數之和

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

Leetcode 三數之和

解決方案一 class solution else if nums j nums k target else while i 1 1 i return lllist 解決方案2 class solution 如果有3個0,就直接作為乙個解 if zerosize 3 res.add arrays.a...