[リートコード] 0015.3Sum

Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク

中くらい

 


整数配列 nums を指定すると、すべてのトリプレットを返します [数値[i]、数値[j]、数値[k]] そのような i != j私 != k、 そして j != k、 そして nums[i] + nums[j] + nums[k] == 0.

ソリューション セットには重複するトリプレットが含まれてはいけないことに注意してください。

例 1:

入力: 数値 = [-1,0,1,2,-1,-4]
出力: [[-1,-1,2],[-1,0,1]]
説明: 
nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0. nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0. nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0。個別の 3 つ組は [-1,0,1] と [-1,-1] です。 ,2] 出力の順序とトリプレットの順序は重要ではないことに注意してください。

例 2:

入力: 数値 = [0,1,1]
出力: []
説明: 唯一可能な 3 つの要素の合計は 0 になりません。

例 3:

入力: 数値 = [0,0,0]
出力: [[0,0,0]]
説明: 唯一可能な 3 つの項の合計は 0 になります。

制約:

  • 3 <= nums.length <= 3000
  • -10 5 <= nums[i] <= 10 5

パイソン

				
					class 解決策: 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 および nums[low] == nums[low - 1]: low += 1 def threeSum(self, nums: List[int]) - > List[List[int]]: result = [] nums.sort() for i、enumerate(nums) の項目: if item > 0: item != nums[i-1] または i == 0 の場合に中断します: self.twoSum(nums, i, result) 結果を返します
				
			
ja日本語