【发布时间】:2018-03-31 20:01:39
【问题描述】:
我正在尝试解决以下问题:
给定一个由 n 个整数组成的数组 nums 和一个目标,找出其中的个数 索引三元组 i, j, k 满足 0
例如,给定 nums = [-2, 0, 1, 3] 和 target = 2。
返回 2。因为有两个三元组之和小于 2:
[-2, 0, 1] [-2, 0, 3]
我的算法:从列表中删除单个元素,设置 target = target - number_1,搜索使 number_1 + number _2
问题链接是https://leetcode.com/problems/3sum-smaller/description/。
我的解决办法是:
def threeSumSmaller(nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
nums = sorted(nums)
smaller = 0
for i in range(len(nums)):
# Create temp array excluding a number
if i!=len(nums)-1:
temp = nums[:i] + nums[i+1:]
else:
temp = nums[:len(nums)-1]
# Sort the temp array and set new target to target - the excluded number
l, r = 0, len(temp) -1
t = target - nums[i]
while(l<r):
if temp[l] + temp[r] >= t:
r = r - 1
else:
smaller += 1
l = l + 1
return smaller
我的解决方案失败了:
Input:
[1,1,-2]
1
Output:
3
Expected:
1
我不明白为什么会出现错误,因为我的解决方案通过了 30 多个测试用例。
感谢您的帮助。
【问题讨论】:
标签: python algorithm sorting data-structures