https://leetcode-cn.com/conte...第一题5352.生成一个奇数个字符的字符串https://leetcode-cn.com/conte。..这道题只能用两个字母,比如'a','b',n是奇数,直接returnn'a'。如果n是偶数,返回n-1'a',1'b'。classSolution:defgenerateTheString(self,n:int)->str:ifn%2==1:returnn*'a'return(n-1)*'a'+'b'第二题5353.lightbulbSwitchIIIhttps://leetcode-cn.com/conte...循环一次,记录一个值:当前点亮的最大灯的个数。如果当前打开的灯的数量等于这个数量,那么当前所有的灯都打开了。类解决方案:defnumTimesAllBlue(self,light:List[int])->int:cm=1cnt=0fori,linenumerate(light):cm=max(cm,l)ifi+1==cm:cnt+=1returncnt第3题5354.通知所有员工需要的时间https://leetcode-cn.com/conte...层级关系是一棵树。解决方案的主体是按顺序遍历树,使用队列。第一步是创建一个sub代表每个人有哪些下属,遍历一次manager就可以构建sub。importqueueclass解决方案:defnumOfMinutes(self,n:int,headID:int,manager:List[int],informTime:List[int])->int:ifn==1:return0mt=0q=queue.Queue()q.put((headID,0))sub=[[]for_inrange(n)]fori,jinenumerate(manager):ifj!=-1:sub[j].append(i)而不是q.empty():cid,ct=q.get()mt=max(ct,mt)forsinsub[cid]:q.put((s,ct+informTime[cid]))返回mt第四题5355.T秒后青蛙的位置https://leetcode-cn.com/conte...这道题我wa了好几次。踩了几个坑。所谓无向树就是给定的边的顺序不一定是父到子,也可以是子到父。有两种解决方案。您可以从根开始构建树并理顺顺序。另一种是简单的保存双向关系,然后在遍历树的时候记录访问过的点,防止子访问父。我采用的是第二种,写起来简单,但是注意在vis中,当前节点的儿子数不一定是当前节点的边数。(非根节点要减一)我是直接暴力搞定的。如果当前节点有一个儿子,并且还有时间,那么青蛙在该点停止的概率为0。因为这个我wa过一次,比如输入:8[[2,1],[3,2],[4,1],[5,1],[6,4],[7,1],[8,7]]77Erroroutput:0.25000Expected:0.012457368因为时间是7秒,青蛙不会停在7级解决方法:deffrogPosition(self,n:int,edges:List[列表[int]],t:int,target:int)->float:children=[[]for_inrange(n+1)]vif=[False]*(n+1)p=[0]*(n+1)fors,ttinedges:children[s].append(tt)children[tt].append(s)p[1]=1defvis(i,st):如果st>t:returnvif[i]=Truecnt=0forcinchildren[i]:ifnotvif[c]:cnt+=1f=Falseforcinchildren[i]:ifnotvif[c]:p[c]=cnt*p[i]f=Truevis(c,st+1)iffandst<=t:p[i]=0vis(1,1)return1/p[target]ifp[target]>0else0欢迎来到我的博客:https://codeplot.top/我的博客分类:https://codeplot.top/categories/%E5%88%B7%E9%A2%98/
