defquick_sort(left, right): if left >= right: return i, j = left, right
while i < j: while nums[j] > nums[left] and i < j: j -= 1 while nums[i] <= nums[left] and i < j: i += 1 nums[i], nums[j] = nums[j], nums[i] nums[i], nums[left] = nums[left], nums[i]
res = [] for k inrange(0, num_len - 2): if nums[k] > 0: break if k > 0and nums[k] == nums[k - 1]: continue i, j = k + 1, num_len - 1 while i < j: cur = nums[k] + nums[i] + nums[j] if cur > 0: j -= 1 while i < j and nums[j] == nums[j + 1]: j -= 1 elif cur < 0: i += 1 while i < j and nums[i] == nums[i - 1]: i += 1 else: res.append([nums[k], nums[i], nums[j]]) i += 1 j -= 1 while i < j and nums[i] == nums[i - 1]: i += 1 while i < j and nums[j] == nums[j + 1]: j -= 1
Copyright:
Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.