LeetCode1409.QueriesonaPermutationWithKey查询带键的排列【Medium】【Python】【模拟】问题LeetCode给定1到m之间正整数的数组查询,你有根据以下规则处理所有查询[i](从i=0到i=queries.length-1):一开始,您有排列P=[1,2,3,...,m].对于当前i,找到queries[i]在排列P中的位置(从0开始索引),然后将其移动到排列P的开头。注意queries[i]在P中的位置是queries[i]。返回包含给定查询结果的数组。示例1:输入:queries=[3,1,2,1],m=5Output:[2,1,2,1]解释:查询处理如下:Fori=0:queries[i]=3,P=[1,2,3,4,5],3在P中的位置是2,然后我们将3移动到P的开头得到P=[3,1,2,4,5]。fori=1:queries[i]=1,P=[3,1,2,4,5],1在P中的位置是1,那么我们将1移动到beginninP的g导致P=[1,3,2,4,5]。对于i=2:queries[i]=2,P=[1,3,2,4,5],2在P中的位置是2,然后我们将2移动到P的开头导致P=[2,1,3,4,5]。对于i=3:queries[i]=1,P=[2,1,3,4,5],1在P中的位置为1,然后我们将1移动到P的开头,得到P=[1,2,3,4,5]。因此,包含结果的数组是[2,1,2,1]。示例2:输入:queries=[4,1,2,2],m=4Output:[3,1,2,0]示例3:输入:queries=[7,5,5,8,3],m=8Output:[6,5,0,7,5]Constraints:1<=m<=10^31<=queries.length<=m1<=queries[i]<=mquestionbutton你得到一个数组查询待检查,数组中的元素为1~m之间的正整数。请按照以下规则处理所有query[i](从i=0到i=queries.length-1):一开始,排列P=[1,2,3,...,m]。对于当前i,请找出查询项queries[i]在排列P中的位置(下标从0开始),然后将其从原来的位置移动到排列P的起始位置(即下标为0处)。注意queries[i]在P中的位置就是queries[i]的查询结果。请将待查数组查询的查询结果以数组的形式返回。示例1:输入:queries=[3,1,2,1],m=5输出:[2,1,2,1]解释:query数组查询处理如下:Fori=0:queries[i]=3,P=[1,2,3,4,5],3在P中的位置为2,那么我们将3移动到P的起始位置,得到P=[3,1,2,4,5]。对于i=1:queries[i]=1,P=[3,1,2,4,5],1在P中的位置为1,那么我们将1移动到P的起始位置,得到P=[1,3,2,4,5]。对于i=2:queries[i]=2,P=[1,3,2,4,5],2在P中的位置为2,那么我们将2移动到P的起始位置,得到P=[2,1,3,4,5]。对于i=3:queries[i]=1,P=[2,1,3,4,5],1在P中的位置为1,那么我们将1移动到P的起始位置,得到P=[1,2,3,4,5]。因此,返回的结果数组是[2,1,2,1]。示例2:输入:queries=[4,1,2,2],m=4输出:[3,1,2,0]示例3:输入:queries=[7,5,5,8,3],m=8输出:[6,5,0,7,5]提示:1<=m<=10^31<=queries.length<=m1<=queries[i]<=m思路模拟时间复杂度:O(n),其中n是查询的长度空间复杂度:O(n)Python3代码来自输入importListclass解决方案:defprocessQueries(self,queries:List[int],m:int)->List[int]:p=[xforxinrange(1,m+1)]res=[]forxinqueries:temp=p.index(x)num=p[temp]res.append(temp)p.remove(p[temp])p.insert(0,num)返回resGitHublinkPython
