大佬都是3-5分鐘一題,而我10分鐘一題,最後一題還不會。。qaq
5356. 矩陣中的幸運數
給你乙個m * n
的矩陣,矩陣中的數字各不相同。請你按任意順序返回矩陣中的所有幸運數。
幸運數是指矩陣中滿足同時下列兩個條件的元素:
class solution(object):
def luckynumbers (self, matrix):
""":type matrix: list[list[int]]
:rtype: list[int]
"""if not matrix:
return
if len(matrix)==1:
return [min(matrix[0])]
for i,k in enumerate(matrix):
m = min(k)
m_index = k.index(m)
res =
for j in range(len(matrix)):
if i!=j:
if m >= max(res):
return [m]
return #有可能不存在答案 坑 出了個bug
class solution:
def luckynumbers (self, matrix: list[list[int]]) -> list[int]:
n=len(matrix)
m=len(matrix[0])
r=for i in range(n):
for j in range(m):
if matrix[i][j]==min(matrix[i]) and matrix[i][j]==max(matrix[k][j] for k in range(n)):
return r
5357. 設計乙個支援增量操作的棧請你設計乙個支援下述操作的棧。
實現自定義棧類 customstack :
customstack(int maxsize):用 maxsize 初始化物件,maxsize 是棧中最多能容納的元素數量,棧在增長到 maxsize 之後則不支援 push 操作。
void push(int x):如果棧還未增長到 maxsize ,就將 x 新增到棧頂。
int pop():返回棧頂的值,或棧為空時返回 -1 。
void inc(int k, int val):棧底的 k 個元素的值都增加 val 。如果棧中元素總數小於 k ,則棧中的所有元素都增加 val 。
class customstack(object):
def __init__(self, maxsize):
""":type maxsize: int
"""self.maxsize = maxsize
self.stack =
def push(self, x):
""":type x: int
:rtype: none
"""if len(self.stack)5179. 將二叉搜尋樹變平衡
給你一棵二叉搜尋樹,請你返回一棵 平衡後 的二叉搜尋樹,新生成的樹應該與原來的樹有著相同的節點值。
如果一棵二叉搜尋樹中,每個節點的兩棵子樹高度差不超過 1 ,我們就稱這棵二叉搜尋樹是 平衡的 。
如果有多種構造方法,請你返回任意一種。
1.利用bst中序有序的特點也到排序陣列res
2.利用res構造符合要求的樹
class solution:
def balancebst(self, root: treenode) -> treenode:
res =
def dfs(root):
if not root:
return
dfs(root.left)
dfs(root.right)
dfs(root)
def build(l):
if not l:
return none
mid = len(l)//2
root = treenode(l[mid])
root.left = build(l[:mid])
root.right = build(l[mid+1:])
return root
return build(res)
5359. 最大的團隊表現值class solution:公司有編號為 1 到 n 的 n 個工程師,給你兩個陣列 speed 和 efficiency ,其中 speed[i] 和 efficiency[i] 分別代表第 i 位工程師的速度和效率。請你返回由最多 k 個工程師組成的 最大團隊表現值 ,由於答案可能很大,請你返回結果對 10^9 + 7 取餘後的結果。
團隊表現值 的定義為:乙個團隊中「所有工程師速度的和」乘以他們「效率值中的最小值」。
示例 1:
輸入:n = 6, speed = [2,10,3,1,5,8], efficiency = [5,4,3,9,7,2], k = 2
輸出:60
解釋:我們選擇工程師 2(speed=10 且 efficiency=4)和工程師 5(speed=5 且 efficiency=7)。他們的團隊表現值為 performance = (10 + 5) * min(4, 7) = 60 。
方法:貪心,本質上是最看重效率就是說最大值比較看重效率。維護乙個堆,堆裡存最大的k位工程師的速度,因為遍歷的效率越來越小,所以直接把堆裡和當前工程師的總速度乘以當前效率就是目前最大值。
def maxperformance(self, n: int, speed: list[int], efficiency: list[int], k: int) -> int:
a=sorted([(i,j) for i,j in zip(speed,efficiency)],key=lambda x:-x[1])
q=ans=0
sum=0
for x,y in a:
if len(q)==k:
sum-=b
else:
b=0sum+=max(b,x)
ans=max(ans,y*sum)
return ans%1000000007
LeetCode 第 180 場周賽 解題報告
題目型別 暴力列舉 列舉每個元素,然後檢查是否符合幸運數的要求。class solution if matrix i j matrix i k for int k 0 flag k n k if matrix i j matrix k j if flag return res 題目型別 模擬,棧 使...
leetcode 第132場周賽
愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字n。在每個玩家的回合,玩家需要執行以下操作 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利時才返回true,否則返回false。假設兩個玩家都以最佳狀態參與遊戲。示例 1 輸入 2輸出 true解釋 愛...
leetcode周賽 第176場
題目描述 給你乙個 m n 的矩陣 grid,矩陣中的元素無論是按行還是按列,都以非遞增順序排列。請你統計並返回 grid 中 負數 的數目。示例 1 輸入 grid 4,3,2,1 3,2,1,1 1,1,1,2 1,1,2,3 輸出 8 解釋 矩陣中共有 8 個負數。示例 2 輸入 grid 3...