TIL #70 : [Algorithm] LeetCode 15. 3sum
3sum
質問する
Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Notice that the solution set must not contain duplicate triplets.
例
Example 1:Input: nums = [-1,0,1,2,-1,-4]
Output: [[-1,-1,2],[-1,0,1]]
Example 2:Input: nums = []
Output: []
Example 3:Input: nums = [0]
Output: []
最初の試み:
ネストされたforゲートを3つ用いて回転した結果,時間内に発見された.(for i... for j... for k....)
二次試行:
プールメソッド
Input: nums = [-1,0,1,2,-1,-4]
Output: [[-1,-1,2],[-1,0,1]]
Input: nums = []
Output: []
Input: nums = [0]
Output: []
sorted()
)された後、リスト要素に1つずつアクセスします.l
、r
.result
に追加されます.l
、r
の両方が1つずつ移動するコードを記述する.に答える
def threeSum(nums):
new_num = sorted(nums)
length = len(new_num)
result = []
for i in range(length - 2):
if i > 0 and new_num[i] == new_num[i - 1]:
continue
l = i + 1
r = length - 1
while l < r:
total = new_num[i] + new_num[l] + new_num[r]
if total < 0:
l += 1
elif total > 0:
r -= 1
elif total == 0:
result.append([new_num[i], new_num[l], new_num[r]])
while l < r and new_num[l] == new_num[l+1]:
l += 1
while l < r and new_num[r] == new_num[r-1]:
r -= 1
l += 1
r -= 1
return result
leetcodeディスカッションで見つけたコード .
推奨事項:
numsがいずれも0の場合、[0,0,0]が返されます.
nums要素が3つ未満の場合、空のリストが返されます.
Reference
この問題について(TIL #70 : [Algorithm] LeetCode 15. 3sum), 我々は、より多くの情報をここで見つけました https://velog.io/@mjhuh263/TIL-70-Algorithm-LeetCode-15.-3sumテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol