문제

한 두 가지가 아닌 배열:

[2, 3, 4, 5, 6, 7, 8, 9]

지금에 따라 몇 가지 매개변수:

  1. current_item -현재 선택된 항목입니다.
  2. select_size 선택 크기,항상한다.

하고 싶어 하위의 목록은 다음의 조건:

  1. current_item 해야에서 중의 하위한 경우는 것이 가능합니다.
  2. 는 경우에 없을 때에 충분한 요소는 왼쪽/오른쪽에,목록을 사용하는 사람에게서 오른쪽/왼쪽을.

예제:

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$.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top