Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크
정수 배열 nums가 주어지면 모든 삼중항을 반환합니다. [숫자[i], 숫자[j], 숫자[k]]
그렇게 나는 != j
, 나는 !=k
, 그리고 j !=k
, 그리고 숫자[i] + 숫자[j] + 숫자[k] == 0
.
솔루션 세트에는 중복된 삼중항이 포함되어서는 안 됩니다.
예시 1:
입력: 숫자 = [-1,0,1,2,-1,-4] 산출: [[-1,-1,2],[-1,0,1]] 설명: 숫자[0] + 숫자[1] + 숫자[2] = (-1) + 0 + 1 = 0. 숫자[1] + 숫자[2] + 숫자[4] = 0 + 1 + (-1) = 0. nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0. 별개의 삼중항은 [-1,0,1] 및 [-1,-1 ,2] 출력 순서와 세 쌍의 순서는 중요하지 않습니다.
예 2:
입력: 숫자 = [0,1,1] 산출: [] 설명: 가능한 유일한 삼중항의 합은 0이 아닙니다.
예시 3:
입력: 숫자 = [0,0,0] 산출: [[0,0,0]] 설명: 유일하게 가능한 삼중항의 합은 0이 됩니다.
제약:
3 <= 숫자.길이 <= 3000
-10 5 <= 숫자[i] <= 10 5
파이썬
클래스 해결책: def twoSum(self, nums: List[int], i: int, result: List[List[int]]): low = i + 1 hight = len(nums) - 1 while (low < hight): sum = nums[i] + nums[low] + nums[hight] if sum < 0: low += 1 elif sum > 0: hight -= 1 else: result.append([nums[i], nums[low] , nums[hight]]) low += 1 hight -= 1 while low < hight and nums[low] == nums[low - 1]: low += 1 def threeSum(self, nums: List[int]) - > List[List[int]]: result = [] nums.sort() for i, enumerate(nums)의 항목: 항목 > 0: 항목 != nums[i-1] 또는 i == 0인 경우 중단: self.twoSum(nums, i, result) 결과 반환