Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit b35073c

Browse files
python: add problem 12 and unittest
1 parent 2b396f1 commit b35073c

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

Python/sln_1_100/solution_11_20.py

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,48 @@
11
# -*- coding: utf-8 -*-
2+
from collections import OrderedDict
3+
from typing import List
4+
25

36
class Solution_11_20(object):
47
def intToRoman(self, num):
58
"""
6-
9+
12
710
:param num:
811
:return:
912
"""
10-
rets = ['I','V','X','L','C','D','M']
13+
num2roman = {1: 'I', 5: 'V', 10: 'X', 50: 'L', 100: 'C', 500: 'D', 1000: 'M'}
14+
rets = ['I', 'V', 'X', 'L', 'C', 'D', 'M']
15+
for n in num2roman:
16+
num
17+
18+
def threeSumClosest(self, nums: List[int], target: int) -> int:
19+
"""
20+
16
21+
:param nums:
22+
:param target:
23+
:return:
24+
"""
25+
if len(nums) == 3:
26+
return sum(nums)
27+
nums = sorted(nums)
28+
29+
if sum(nums[:3]) >= target:
30+
return sum(nums[:3])
31+
if sum(nums[-3:]) <= target:
32+
return sum(nums[-3:])
33+
min_diff = sum(nums[:3])-target
34+
for i in range(len(nums) - 2):
35+
j = i + 1
36+
k = len(nums) - 1
37+
while j < k:
38+
diff = nums[i] + nums[j] + nums[k] - target
39+
if diff < 0:
40+
j += 1
41+
elif diff > 0:
42+
k -= 1
43+
else:
44+
return target
45+
if abs(diff) < abs(min_diff):
46+
min_diff = diff
1147

48+
return min_diff + target
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# -*- coding: utf-8 -*-
2+
from unittest import TestCase
3+
from sln_1_100.solution_11_20 import Solution_11_20
4+
5+
6+
class Test_solution_11_20(TestCase):
7+
def setUp(self) -> None:
8+
self.sln = Solution_11_20()
9+
10+
def test_threeSumClosest(self):
11+
ret = self.sln.threeSumClosest([-1, 0, 1, 1, 55], 3)
12+
self.assertEqual(ret, 2)

0 commit comments

Comments
 (0)