-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path373FindKPairswithSmallestSums.py
70 lines (69 loc) · 2.06 KB
/
373FindKPairswithSmallestSums.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
class Solution(object):
def kSmallestPairs(self, nums1, nums2, k):
"""
:type nums1: List[int]
:type nums2: List[int]
:type k: int
:rtype: List[List[int]]
"""
import heapq
res = []
class MyPair(object):
def __init__(self, ele):
self.a = ele
self.sum = ele[0] + ele[1]
def getsum(self):
return self.sum
def getele(self):
return self.a
def __lt__(self, nxt):
return self.sum < nxt.sum
for i in nums1:
for j in nums2:
heapq.heappush(res, MyPair([i, j]))
nsmall = heapq.nsmallest(k, res)
finalres = []
for i in nsmall:
finalres.append(i.getele())
return finalres
def kSmallestPairs2(self, nums1, nums2, k):
"""
:type nums1: List[int]
:type nums2: List[int]
:type k: int
:rtype: List[List[int]]
"""
import heapq
res = []
class MyPair(object):
def __init__(self, ele):
self.a = ele
self.sum = ele[0] + ele[1]
def getsum(self):
return self.sum
def getele(self):
return self.a
def __lt__(self, nxt):
return self.sum > nxt.sum
flag = False
for i in nums1:
idx2 = 0
for j in nums2:
idx2 += 1
curr = MyPair([i, j])
heapq.heappush(res, curr)
if len(res) > k:
top = heapq.heappop(res)
if curr == top or curr.getsum()==top.getsum():
if idx2 == 1:
flag = True
break
if flag:
break
finalres = []
for i in res:
finalres.append(i.getele())
return finalres
sol = Solution()
res = sol.kSmallestPairs2(nums1 = [1,1,2], nums2 = [1,2,3], k = 2)
print(res)