File tree 4 files changed +101
-0
lines changed
4 files changed +101
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution (object ):
2
+ def countNegatives (self , grid ):
3
+ """
4
+ :type grid: List[List[int]]
5
+ :rtype: int
6
+ """
7
+ if not grid or not grid [0 ]:
8
+ return 0
9
+ m , n = len (grid ), len (grid [0 ])
10
+
11
+ res = 0
12
+ for i in range (m ):
13
+ for j in range (n ):
14
+ if grid [i ][j ] < 0 :
15
+ res += 1
16
+ return res
Original file line number Diff line number Diff line change
1
+ class ProductOfNumbers (object ):
2
+
3
+ def __init__ (self ):
4
+ self .prefix = [1 ]
5
+
6
+ def add (self , num ):
7
+ """
8
+ :type num: int
9
+ :rtype: None
10
+ """
11
+ if num :
12
+ self .prefix .append (self .prefix [- 1 ] * num )
13
+ else :
14
+ self .prefix = [1 ]
15
+
16
+ def getProduct (self , k ):
17
+ """
18
+ :type k: int
19
+ :rtype: int
20
+ """
21
+ if k >= len (self .prefix ):
22
+ return 0
23
+ return self .prefix [- 1 ] / self .prefix [- k - 1 ]
Original file line number Diff line number Diff line change
1
+ class Solution (object ):
2
+ def maxEvents (self , events ):
3
+ """
4
+ :type events: List[List[int]]
5
+ :rtype: int
6
+ """
7
+ from heapq import *
8
+ if not events :
9
+ return 0
10
+ # 排序并反转,反转是为了可以快速pop
11
+ events = sorted (events , key = lambda x :(x [0 ], x [1 ]))[::- 1 ]
12
+
13
+ queue = []
14
+ res = 0
15
+ for day in range (1 , 10 ** 5 + 1 ):
16
+ # 把所有结束日期在当前日期之前的event都pop掉
17
+ while queue and queue [0 ] < day :
18
+ heappop (queue )
19
+
20
+ # 把所有开始日期大于等于当前日期的event都push进队列
21
+ while events and events [- 1 ][0 ] <= day :
22
+ last = events .pop ()
23
+ heappush (queue , last [1 ])
24
+
25
+ if queue :
26
+ # 如果当前日期有可以去的event,就去这一个
27
+ heappop (queue )
28
+ res += 1
29
+ if not queue and not events :
30
+ # 如果所有event都参加完了
31
+ break
32
+
33
+ return res
Original file line number Diff line number Diff line change
1
+ class Solution (object ):
2
+ def isPossible (self , target ):
3
+ """
4
+ :type target: List[int]
5
+ :rtype: bool
6
+ """
7
+ from heapq import *
8
+ if len (target ) == 1 :
9
+ return target [0 ] == 1
10
+
11
+ s = sum (target )
12
+ target = [- item for item in target ]
13
+ heapify (target )
14
+
15
+ while s > len (target ):
16
+ # 找当前最大的数和第二大的数
17
+ m = - heappop (target )
18
+ s_m = - target [0 ]
19
+
20
+ # 更新 m 并更新 s
21
+ diff = s - m
22
+ if not diff :
23
+ break
24
+ new_m = m - (max (1 , (m - s_m ) / diff ) * diff )
25
+ s = s - m + new_m
26
+
27
+ heappush (target , - new_m )
28
+
29
+ return not any ([num != - 1 for num in target ])
You can’t perform that action at this time.
0 commit comments