문제
한 두 가지가 아닌 배열:
[2, 3, 4, 5, 6, 7, 8, 9]
지금에 따라 몇 가지 매개변수:
current_item
-현재 선택된 항목입니다.select_size
선택 크기,항상한다.
하고 싶어 하위의 목록은 다음의 조건:
- current_item 해야에서 중의 하위한 경우는 것이 가능합니다.
- 는 경우에 없을 때에 충분한 요소는 왼쪽/오른쪽에,목록을 사용하는 사람에게서 오른쪽/왼쪽을.
예제:
list: [2, 3, 4, 5, 6, 7, 8, 9]
current_item: 5
select_size: 3
result: [4, 5, 6]
list: [2, 3, 4, 5, 6, 7, 8, 9]
current_item: 2
select_size: 5
result: [2, 3, 4, 5, 6]
list: [2, 3, 4, 5, 6, 7, 8, 9]
current_item: 8
select_size: 5
result: [5, 6, 7, 8, 9]
해결책
자의 인덱스가 중앙 항목할 $c$, 고,길이의 목록할 $2r+1$.우리가 가는 지표의 목록 $0,\ldots,n-1$.
거기에는 네 가지 경우를 생각해 보십시오:
- 는 경우 $n>2r+1$, 다음 결과가 정의되지 않은(당신의 게시물).
- 는 경우 $0\배경 c r$ 고 $c+r\배경 n-1$, 에,당신은 단지 요소 $c-r\ldots,c+r$.
- 는 경우 $c-r < 0$, 에,당신은 취소 $0,\ldots,2r$.
- 는 경우 $c+r\hra 출력 n$, 에,당신은 취소 $n-2r-1,\ldots,n-1$.
에 후자의 두 가지 경우에,우리는 보장 내에서 범위 이후 $n>2r+1$.
제휴하지 않습니다 cs.stackexchange