知乎 0916 iOS A 卷
笔试三道题,不用动脑子。
1 堆排序
import heapq
class Solution:
def viewFrames(self , views: List[int], columnCount: int) -> List[List[int]]:
result = []
h = [[0, i] for i in range(columnCount)]
heapq.heapify(h)
for i in views:
t = heapq.heappop(h)
result.append([t[1] * 100, t[0], 100, i])
heapq.heappush(h, [t[0] + i, t[1]])
return result
2 计数排序
class Solution:
def bestSell(self , dealFlow: List[int], minPrice: int, maxPrice: int) -> int:
# write code here
t = [0 for _ in range(400000)]
for i in dealFlow:
t[i] += 1
count = 0
index = -1
for i in range(minPrice, maxPrice + 1):
if t[i] > count or (t[i] != 0 and t[i] == count and i > index):
count = t[i]
index = i
return index
3 DFS
class Solution:
def dfs(self, grid: List[List[int]], x: int, y: int) -> int:
if x < 0 or x >= len(grid):
return 0
if y < 0 or y >= len(grid[0]):
return 0
if grid[x][y] == 0:
return 0
result = grid[x][y]
grid[x][y] = 0
result += self.dfs(grid, x - 1, y)
result += self.dfs(grid, x + 1, y)
result += self.dfs(grid, x, y + 1)
result += self.dfs(grid, x, y - 1)
return result
def bigestMine(self , grid: List[List[int]]) -> int:
result = 0
for x in range(len(grid)):
for y in range(len(grid[x])):
result = max(result, self.dfs(grid, x, y))
return result
#笔试经验#
汤臣倍健公司氛围 402人发布