HJ64_MP3光标位置_数组_模拟思路_滑动窗口
思路:用模拟跟踪U、D 得输出的歌曲,用双指针跟踪歌曲当前窗口。
注意,在第一首向上滑动,和最后一首向下滑是,窗口特殊跳动,此时双指针指向特殊处理。
留意到,不管是特殊情况还是普通情况,指针上划时歌曲减一。如1调到10,10上划为9,视为减一。
得到代码如下:
import sys a = int(sys.stdin.readline().strip()) b=sys.stdin.readline().strip() #a = 10 #b='UUUU' left,right=0,4 index=1#标记歌曲第几首 for i in b: if i=="U": if index==1: left=a-3 right=a+1 index=a else: index-=1 #print("U",index) elif i == "D": if index==a: left=1 right=5 index=1 else: index+=1 #print("D",index) if index not in range(left,right): if index<left: left-=1 right-=1 #print("U",left,right) else: left+=1 right+=1 #print("D",left,right) if a<=4: left=1 right=a+1 print(" ".join(list(map(str,range(left,right))))) print(index)