https://leetcode-cn.com/conte...第一题5344.比当前数小的数有多少https://leetcode-cn.com/conte...我的做法是先排序,然后用dict统计每个数字前面的数字个数。然后迭代nums以生成答案。类解决方案:defsmallerNumbersThanCurrent(self,nums:List[int])->List[int]:slist=nums[::]slist.sort()d={}i=0cur=slist[0]d[cur]=0whileistr:l=len(votes[0])rank=[]d={}fortinvotes[0]:d[t]=[0]*l+[-ord(t)]forvinvotes:fori,tinenumerate(v):d[t][i]+=1forkind:rank.append(d[k])#print(rank)rank.sort(reverse=True)r=[]forxinrank:r.append(chr(-x[-1]))return''.join(r)第三题5346.二叉树中的链表https://leetcode-cn.com/conte...dfs函数用于遍历树,match函数用于比较树和链表的值时树的一个节点等于链表头节点的值。如果匹配成功,则将falg设置为True,之后不再进行遍历和比较。#单向链表的定义。#classListNode:#def__init__(self,x):#self.val=x#self.next=None#二叉树节点的定义。#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=Noneclass解:defdfs(self,h,r):ifself.flag:returnifh.val==r.val:self.match(h,r)ifself.flag:returnifr.left:self.dfs(h,r.left)ifnotself.flag:ifr.right:self.dfs(h,r.right)defmatch(self,h,r):ifrandh.val==r.val:#print('mathch',h.val)ifh.next==None:self.flag=True返回self.match(h.next,r.left)如果不是self.flag:self.match(h.next,r.right)else:returndefisSubPath(self,head:ListNode,root:TreeNode)->bool:self.flag=Falseself.dfs(head,root)returnself.flag第4题5347.使网格图至少有一条有效路径的最小代价https://leetcode-cn.com/conte...广度优先搜索,每一步都按照原格子的方向走完所有的地方下一步,从上一步的边缘开始,访问任何相邻但未访问的网格类解决方案:defminCost(self,grid:List[List[int]])->int:#1,向右走在nextstep,也就是,你会从grid[i][j]走到grid[i][j+1]#2,然后往左边走nextstep,也就是你会从grid[i][j]togrid[i][j-1]#3,下一步就是往下走,也就是你会从grid[i][j]走到grid[i+1][j]#4、接下来就是往上走,就是从grid[i][j]走到grid[i-1][j]n=len(grid)m=len(grid[0])mp=[[False]*mfor_inrange(n)]defstep(x,y):l=set()while0<=x