Skip to content

Commit 202badb

Browse files
committedFeb 29, 2020
2020-02-28
1 parent 86e9e7f commit 202badb

File tree

4 files changed

+101
-0
lines changed

4 files changed

+101
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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 numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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 numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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 numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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])

0 commit comments

Comments
 (0)