Stack Overflow 의 질문 에서 영감을 얻었습니다 .
정수 비어 배열 감안 x
하고 양수 n
, 컴퓨팅 합계 각각의 슬라이딩 블록 의 길이를 n
배열을 따라 x
, 원 다음 오른쪽 값을 왼쪽에서 누락 값을 충전 :
- 첫 번째 블록은의 첫 번째 항목을 포함하며 그
x
앞에는n-1
순환 이동 된 항목이 있습니다. - 제 2 블록은 원형으로 시프트 된 엔트리에
x
선행하는 제 1 및 제 2 엔트리를n-2
가지며; 등등.
출력 배열 y
의 크기는 x
입니다. 것은 가능 n
의 길이를 초과 x
하고 값이 x
원형으로되어 재사용 수회 .
예
예 1 (값은 한 번만 재 사용됨)
x = [2, 4, -3, 0, -4]
n = 3
출력으로 주다
y = [-2, 2, 3, 1, -7]
어디에
-2
블록의 합입니다[0, -4, 2]
(처음 두 값은 원형 이동에서 나옵니다)2
의 합입니다[-4, 2, 4]
(첫 번째 값은 원형 이동에서 나옵니다)3
[2, 4, -3]
(더 이상 원형 이동이 필요하지 않음 )의 합입니다.1
~의 합이다[4, -3, 0]
-7
의 합입니다[-3, 0, -4]
.
예 2 (값이 여러 번 재 사용됨)
x = [1, 2]
n = 5
주기
y = [7, 8]
어디에
7
블록의 합입니다[1, 2, 1, 2, 1]
(처음 4 개의 값이 순환 재 사용됨)8
블록의 합입니다[2, 1, 2, 1, 2]
(처음 세 값은 순환 재 사용됨)
추가 규칙
- 이 알고리즘은 임의의 크기의 배열과 임의의 정수 값에 대해 작동해야합니다. 프로그램이 데이터 유형 또는 메모리 제한에 의해 제한되는 경우 허용됩니다. 그러나 양의 정수 값뿐만 아니라 양수도 처리해야합니다.
- 합리적인 수단으로 입 / 출력을 취하거나 생산할 수 있습니다 .
- 모든 프로그래밍 언어의 프로그램 또는 기능 이 허용 됩니다 . 표준 허점 은 금지되어 있습니다.
- 바이트 단위의 최단 코드가 이깁니다.
테스트 사례
x, n, -> y
[2, 4, -3, 0, -4], 3 -> [-2, 2, 3, 1, -7]
[1, 2], 5 -> [7, 8]
[2], 7 -> [14]
[-5, 4, 0, 1, 0, -10, -4], 4 -> [-19, -15, -5, 0, 5, -9, -13]
[-5, 4, 0, 1, 0, -10, -4], 1 -> [-5, 4, 0, 1, 0, -10, -4]
[-2, -1, 0, 1, 2, 3], 5 -> [4, 3, 2, 1, 0, 5]
[-10, 0, 10], 4 -> [-10, 0, 10]