2017-09-06 1 views
0

도전 과제 인 hackerrank에 대해 원형 순환 알고리즘을 구현하려고합니다. 내 코드 (중간 블록)는 작은 입력에서는 제대로 실행되지만 시간 초과로 인해 큰 입력에서는 실패합니다. 코드 최적화에 도움을 주시면 많은 도움을 받으실 수 있습니다. 당신은 실제로 배열 항목을 찾기 위해 회전하지 않아도하지만 당신은 그렇게 모듈 미적분을 사용할 수 있습니다원형 배열 회전 : Python 2.7

import sys 


n,k,q = raw_input().strip().split(' ') 
n,k,q = [int(n),int(k),int(q)] 
a = map(int,raw_input().strip().split(' ')) 

for j in range(0,k): 
    temp = a[n-1] 
    for i in range(n-2, -1, -1): 
     a[i+1] = a[i] 
    a[0] = temp  


for a0 in xrange(q): 
    m = int(raw_input().strip()) 
    print a[m] 
+0

NumPy와 사용을 고려 :

우리는 다음과 같은 쓸 수 있는지 알고. – DyZ

답변

1

:

여기 내 코드입니다. 우리는 인덱스 i를 가지고 k 위치로 이동하면 그의 새 인덱스는 m=(i+k)%n이 될 것입니다. 따라서 인덱스 m이 k 위치로 이동 된 경우 이전 위치는 i=(m-k)%n입니다.

for a0 in xrange(q): 
    m = int(raw_input().strip()) 
    prev_index = (m - k) % n 
    print a[prev_index]