給定乙個包含 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]
]
這題是三數之和的變種,還是雙指標的應用。
只是在最外層多加一層for迴圈巢狀罷了。
**只是在三數之和的**上加了一層j迴圈。
class
solution
:def
foursum
(self, nums: list[
int]
, target:
int)
-> list[list[
int]]:
if(not nums or
len(nums)
<4)
:return
nums.sort(
) res=
for i in
range
(len
(nums)-3
):#排除重複的nums[i]
if(i>
0and nums[i]
==nums[i-1]
):continue
for j in
range
(i+1
,len
(nums)-2
):#排除重複的nums[j]
if(j>i+
1and nums[j]
==nums[j-1]
):continue
l=j+
1 r=
len(nums)-1
while l
sum= nums[i]
+nums[j]
+nums[l]
+nums[r]
ifsum
==target:
[nums[i]
,nums[j]
,nums[l]
,nums[r]])
l=l+
1 r=r-
1elif
sum< target:
l=l+
1else
: r=r-
1#排除重複的nums[l],nums[r]
while
(l==nums[l+1]
):l=l+
1while
(l==nums[r-1]
):r=r-
1return res
測試是跑成功了,但是,沒想到提交時,卻報錯了。。。
計算了下,發現是l,r去重時,因為0,0相鄰,又,[-5,-4,0,0]是正解,程式直接把這個解跳過了。好吧,那就去除相鄰時的去重情況,修改如下:
#排除重複的nums[l],nums[r]
這下總ojbk了把?
class
solution
:def
foursum
(self, nums: list[
int]
, target:
int)
-> list[list[
int]]:
if(not nums or
len(nums)
<4)
:return
nums.sort(
) res=
for i in
range
(len
(nums)-3
):#排除重複的nums[i]
if(i>
0and nums[i]
==nums[i-1]
):continue
for j in
range
(i+1
,len
(nums)-2
):#排除重複的nums[j]
if(j>i+
1and nums[j]
==nums[j-1]
):continue
l=j+
1 r=
len(nums)-1
while l
sum= nums[i]
+nums[j]
+nums[l]
+nums[r]
ifsum
==target:
[nums[i]
,nums[j]
,nums[l]
,nums[r]])
#排除重複的nums[l],nums[r]
emmmm,總算成功了!
不過,這樣的結果,果然不能交差吧?畢竟是o(n^3)的複雜度。
待更新。。。
好了,!完結撒花~
同時,貼上咱的個人部落格,歡迎客官大老爺們來訪~
青楓閣
leetcode刷題之路18 四數之和
給定乙個包含 n 個整數的陣列 nums 和乙個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d 使得 a b c d 的值與 target 相等?找出所有滿足條件且不重複的四元組。注意 答案中不可以包含重複的四元組。示例 給定陣列 nums 1,0,1,0,2,2 和 ...
leetcode刷題python之四數之和
class solution def foursum self,nums list int target int list list int nums.sort length len nums result if length 4 return for i in range length 3 if ...
LeetCode C 刷題計畫 18 四數之和
author csu張揚 email csuzhangyang gmail.com or csuzhangyang qq.com category difficulty pass rate br algorithms medium 36.01 array hash table two pointer...