forked from maiquynhtruong/algorithms-and-problems
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path3-sum-smaller.py
45 lines (43 loc) · 997 Bytes
/
3-sum-smaller.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# http://buttercola.blogspot.com/2015/08/leetcode.html
# Comment out one version to run the other.
# My version
nums = map(int, raw_input().split())
t = int(raw_input())
nums.sort()
curNum = 0
for i in range(len(nums)):
print 'nums i', nums[i]
if nums[i] < t:
curNum = t - nums[i]
print curNum
for j in range(i+1, len(nums)):
print 'nums j', nums[j]
if nums[j] < curNum:
curNum = curNum - nums[j]
print curNum
for k in range(j+1, len(nums)):
print 'nums k', nums[k]
if nums[k] < curNum:
curNum = curNum - nums[k]
print curNum
print nums[i], nums[j], nums[k]
curNum += nums[k]
curNum += nums[j]
curNum += nums[i]
# Better version
nums = map(int, raw_input().split())
t = int(raw_input())
res = 0
nums.sort()
if len(nums) < 3 or not nums: res = 0
else:
for i in range(len(nums)-2):
j = i+1
k = len(nums)-1
while j < k:
if nums[i] + nums[j] + nums[k] < t:
res += k-j
j+=1
else:
k-=1
print res