10 三數之和

2021-09-26 00:13:48 字數 1938 閱讀 3915

題目描述:

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

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

[ [-1, 0, 1],

[-1, -1, 2]

]

python**:

思路1:暴力解法

class

solution

:def

threesum

(self, nums)

: result =

n =len(nums)

for i in

range

(n):

tmp_num1 =

0-nums[i]

#tmp_num1與tmp_num2不能使用相同變數名

for j in

range

(i+1

, n)

: tmp_num2 = tmp_num1 - nums[j]

for k in

range

(j+1

, n)

:if nums[k]

== tmp_num2:

li =

[nums[i]

, nums[j]

, nums[k]

] li.sort(

)if li not

in result:

#去重return result

思路2:

class

solution

:def

threesum

(self, nums)

: nums.sort(

) res =

for i in

range

(len

(nums)-2

):if nums[i]

>0:

# 此時nums[i] + nums[j] + nums[k] > 0

break

if i >

0and nums[i]

== nums[i-1]

:# 去重

continue

j = i +

1 k =

len(nums)-1

while j < k:

s = nums[i]

+ nums[j]

+ nums[k]

if s >0:

# 減小s

k -=

1while nums[k]

== nums[k+1]

and j < k:

#去重 k -=

1elif s <0:

# 增大s

j +=

1while nums[j]

== nums[j-1]

and j < k:

#去重 j +=

1else

:[nums[i]

, nums[j]

, nums[k]])

#儲存 j +=

1 k -=

1while nums[k]

== nums[k+1]

and j < k:

#去重 k -=

1while nums[j]

== nums[j-1]

and j < k:

#去重 j +=

1return res

兩數之和,三數之和

兩數之和 方法一 暴力 throw new illegalargumentexception 時間複雜度 o n 2 空間複雜度 o 1 public int twosum int nums,int target throw newillegalargumentexception no twosum...

兩數之和 三數之和 四數之和

兩數之和意思就是 給你乙個陣列,從中找出兩個數字,讓他們的和等於乙個具體的target。找到所有這樣的兩個數。並且這兩個數字不能完全一樣。n數之和的意思是 給你乙個陣列,從中找出n個數字,讓他們的和等於乙個具體的target。找到所有這樣的n個數。並且這n個數字不能完全一樣。最基礎的,也是最關鍵的就...

兩數之和,三數之和,最接近的三數之和,四數之和

二數之和 給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...