多數求和 leetcode 15 16 18

2021-10-22 02:03:24 字數 1401 閱讀 6932

1. 三數之和:

排序 + 雙指標

演算法流程:

特判,對於陣列長度 nn,如果陣列為 nullnull 或者陣列長度小於 33,返回 。

對陣列進行排序。

遍歷排序後陣列:

若 nums[i]>0nums[i]>0:因為已經排序好,所以後面不可能有三個數加和等於 00,直接返回結果。

(去重1)對於重複元素:跳過,避免出現重複解

令左指標 l=i+1l=i+1,右指標 r=n-1r=n−1,當 lclass

solution

:def

threesum

(self, nums: list[

int])-

> list[list[

int]]:

n=len(nums)

res=

if(not nums or n<3)

:return

nums.sort(

) res=

for i in

range

(n):

if(nums[i]

>0)

:return res

if(i>

0and nums[i]

==nums[i-1]

):# 去重1

continue

l=i+

1 r=n-

1while

(l(nums[i]

+nums[l]

+nums[r]==0

):[nums[i]

,nums[l]

,nums[r]])

while

(l==nums[l+1]

):# 去重2

l=l+

1while

(l==nums[r-1]

):# 去重2

r=r-

1 l=l+

1 r=r-

1elif

(nums[i]

+nums[l]

+nums[r]

>0)

: r=r-

1else

: l=l+

1return resreference:

最接近target的三數之和,返回和

ipad筆記

四數之和

ipad筆記

LeetCode 151 翻轉字串

給定乙個字串,逐個翻轉字串中的每個單詞。示例 1 輸入 the sky is blue 輸出 blue is sky the 示例 2 輸入 hello world 輸出 world hello 解釋 輸入字串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。示例 3 輸入 a good ...

Leetcode 151 翻轉字串

給定乙個字串,逐個翻轉字串中的每個單詞。示例 1 輸入 the sky is blue 輸出 blue is sky the 示例 2 輸入 hello world 輸出 world hello 解釋 輸入字串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。示例 3 輸入 a good ...

leetcode151翻轉字串單詞

leetcode151.翻轉字串裡的單詞 題目描述 給定乙個字串,逐個翻轉字串中的每個單詞 示例 輸入 the sky is blue 輸出 blue is sky the 再這裡需要逐一的是輸入的字串可以在前面或者後面包含多餘的空格,但反轉後的單詞間的空格只能減少到乙個。思路 在這裡考慮進行兩次翻...