如题:
题目分析:
1.一开始采用的是字典存储位置的写法(如代码1所示),写的时候发现用链表更加方便(如代码2所示),找到元素的位置,删除该元素并插入到新位置即可,虽然insert本身也是遍历操作,但是少去了调整其他位置的时间。
代码1
n=int(input())
a={}
for i in range(1,n+1):
a[i]=i
print(a)
m=int(input())
for i in range(m):
p,q=map(int,input().split())
#向后插入,则localp<i<localp+q的下标减一,localp=localp+q,向前插入同理
local=0
for j in range(1,len(a)+1):
if a[j] == p:
local = j
j=0
break
if q>0:
for j in range(local, local + q):
a[j] = a[j + 1]
a[local + q] = p
elif q<0:
for j in range(local, local + q,-1):
a[j] = a[j -1]
a[local + q] = p
else:
continue
for i in range(1,n+1):
print(a[i],end=" ")
代码2
n=int(input())
a=[]
for i in range(1,n+1):
a.append(i)
m=int(input())
for i in range(m):
p, q = map(int, input().split())
for j in range(len(a)):
if a[j]==p:
del a[j]
a.insert(j+q,p)
break
for i in a:
print(i)