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 再這裡需要逐一的是輸入的字串可以在前面或者後面包含多餘的空格,但反轉後的單詞間的空格只能減少到乙個。思路 在這裡考慮進行兩次翻...