当前位置: 首页 > 后端技术 > Python

leetcode第180场周赛-python解决方案

时间:2023-03-25 22:12:19 Python

5356.矩阵类中的幸运数字解决方案:defluckyNumbers(self,matrix:List[List[int]])->List[int]:rmin=[min(x)forxinmatrix]cmax=[]n=len(矩阵)m=len(矩阵[0])对于范围(m)中的i:maxv=矩阵[0][i]对于范围(1,n)中的j:maxv=max(maxv,矩阵[j][i])最高潮。append(maxv)ans=[]foriinrange(n):forjinrange(m):如果矩阵[i][j]==rmin[i]andmatrix[i][j]==cmax[j]:ans.append(matrix[i][j])返回ans5357。设计一个支持增量操作的栈,将self.s=[]创建为一个栈。但是s中每个元素的第一个是真实值,第二个是增加后的值。每次自增操作都是直接增??加栈中的元素,而是记录在栈中相应位置的这个元素列表中,直到pop加完,并添加到上一个元素中。类CustomStack:def__init__(self,maxSize:int):self.size=0self.maxSize=maxSizeself.s=[]defpush(self,x:int)->None:ifself.sizeint:ifself.size==0:return-1x,inc=self.s.pop()iflen(self.s)>0:self.s[-1][1]+=incself.size-=1returnx+incdefincrement(self,k:int,val:int)->无:如果self.size>0:k-=1k=min(k,self.size-1)self.s[k][1]+=val5179我平衡二叉搜索树的方法是遍历树->转数组->排序->构建二叉搜索树类解决方案:defbalanceBST(self,root:TreeNode)->TreeNode:ls=[]defvis(t):ifnott:returnls.append(t)vis(t.left)vis(t.right)vis(root)ls.sort(key=lambdat:t.val)defbuild(l,r):如果l==r:ls[l].left=Nonels[l].right=None如果l+1==r:ls[r].left=None返回ls[l][l]ls[l].left=无ls[l].right=无ls[r].right=无returnls[r]mid=(l+r)>>1ls[mid].left=build(l,mid-1)ls[mid].right=build(mid+1,r)返回ls[mid]返回build(0,len(ls)-1)5359。最大团队绩效值从效率开始,从大到小排列,一开始就把效率设置为最大。这意味着只能选择效率最高的人,然后效率会不断降低。效率越低,能用的人越多。每次选k个(如果人不够就选尽可能多的人)一个满足效率要求且速度最快的人使用优先级队列维护当前选中的所有人的速度,这样每次都可以淘汰最慢的人k:int)->int:es=[]foriinrange(n):es.append((efficiency[i],speed[i]))es.sort(reverse=True)q=queue.PriorityQueue()q.put(es[0][1])mins=es[0][1]sm=minsmine=es[0][0]ans=sm*minemaxv=anscur_min=-1foriinrange(1,n):如果i