三元組相加獲得target

2021-09-16 20:48:21 字數 1136 閱讀 7127

3sum

note: the solution set must not contain duplicate triplets.

for example, given array s = [-1, 0, 1, 2, -1, -4]

example 1

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

a solution set is:

[ [-1, 0, 1],

[-1, -1, 2]

]

亂序陣列,需要找到所有組合,需要三層迴圈,複雜度為o(n³)。

可以先排序,排序後只需要兩層迴圈,複雜度為o(n²)。第一層迴圈遍歷所有元素,第二層迴圈由於陣列已經排序,只需要頭尾兩個指標像中間靠攏,一但三個元素相加為target,則新增此三元組,然後繼續像中間靠攏掃瞄。

需要避免重複的三元組被加入

class solution(object):

def threesum(self, nums):

""":type nums: list[int]

:rtype: list[list[int]]

"""nums.sort()

ret =

for i in range(len(nums) - 2):

# 避免重複

if i > 0 and nums[i] == nums[i-1]:

continue

j, k = i + 1, len(nums) - 1

while j < k:

if nums[i] + nums[j] + nums[k] == 0:

j += 1

k -= 1

# 避免重複

while j < k and nums[j] == nums[j - 1]:

j += 1

while j < k and nums[k] == nums[k + 1]:

k -= 1

elif nums[i] + nums[j] + nums[k] < 0:

j += 1

else:

k -= 1

return ret

等差三元組

題目 和是2組不同的等差三元組,除了等差的性質之外,還有個奇妙的地方在於 5 2 3 2 1 2 7 2 5 2 3 2 n 15。同這對三元組也存在同樣的性質 19 2 15 2 11 2 7 2 5 2 3 2 n 15。這種成對的三元組還有很多。當n 15時,有3對,分別是和,和,和。現給出乙...

完美三元組

問題 定義完美三元組,a,b,d a是d的倍數,b是d的倍數,且a b d 1 輸入 t組測試資料,第一行乙個t 1 t 10000 之後t行每行兩個整數l,r,表示三元組中a 的取值區間 l,r 在此條件下,求滿足的完美三元組的總數 1 l r 100000 輸出 乙個整數。分析 首先,a的值已經...

遞增三元組

遞增三元組 描述給定三個整數陣列a a1,a2,an b b1,b2,bn c c1,c2,cn 請你統計有多少個三元組 i,j,k 滿足 1 i,j,k n ai bj ck 輸入第一行包含乙個整數n。第二行包含n個整數a1,a2,an。第三行包含n個整數b1,b2,bn。第四行包含n個整數c1,...