LeetCode15 三數之和

2021-09-29 03:17:16 字數 1275 閱讀 1079

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。

注意:答案中不可以包含重複的三元組。

例如, 給定陣列 nums = [-1, 0, 1, 2, -1, -4],

滿足要求的三元組集合為:

[ [-1, 0, 1],

[-1, -1, 2]

]

解法一:暴力法 時間複雜度o(n3) 超時。

class

solution

; arrays.

sort

(numtmp)

; list

tmp = arrays.

aslist

(numtmp);if

(!list.

contains

(tmp))}

}}}return list;

}}

解法二: c = -(a+b),列舉a、b以後,在set中查詢-(a+b) 時間複雜度o(n2)

為了判重方便,可以提前將陣列排序。

public list

>

threesum1

(int

nums)

set =

newhashset

<

>()

;for

(int j = i +

1; j < nums.length; j++

)else}}

res =

newarraylist

<

>

(resset)

;return res;

}

時間複雜度o(n2)

public list

>

threesum2

(int

nums)

else

if(s >0)

else

while

(l < r && nums[r -1]

== nums[r]

) l++

; r--;}

}}return res;

}

LeetCode 15 三數之和

15.給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組 方法一,個人解法正確,但是效率太低,時間複雜度o n 3 時間超時,無法提交至leetcode public s...

leetcode 15 三數之和

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

leetcode15 三數之和

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