여러 정수를 포함하는 배열이 있다고 가정합니다. 주어진 숫자 배열에서 모든 인접한 하위 배열을 찾아 다른 목록에 넣습니다. 이제 각 하위 배열을 해당 하위 배열의 최대 요소로 바꿉니다. 또한 우리에게 주어진 숫자 k가 있으며, 우리는 이제 얼마나 많은 부분배열이 주어진 숫자보다 큰지 알아내야 합니다.
따라서 입력이 input_array =[5, 6, 7, 8], k =7과 같으면 출력은 4
가 됩니다.지정된 입력 배열의 연속 하위 배열은 {5}, {6}, {7}, {8}, {5, 6}, {6, 7}, {7, 8}, {5, 6, 7입니다. }, {6, 7, 8}, {5, 6, 7, 8}
최대 요소로 하위 배열을 업데이트하면 하위 배열은 -
가 됩니다.{5}, {6}, {7}, {8}, {6}, {7}, {8}, {7}, {8}, {8}.
요소가 7보다 큰 4세트가 있습니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 카운트:=0
- 연속 :=0
- input_array의 각 x에 대해 다음을 수행합니다.
- x> k이면
- 연속 :=0
- 그렇지 않으면
- 연속 :=연속 + 1
- count :=카운트 + 연속
- x> k이면
input_array의 크기 반환 * ((input_array의 크기 + 1) / 2)의 바닥 값 - 개수
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(input_array, k): count = 0 consecutive = 0 for x in input_array: if x > k: consecutive = 0 else: consecutive += 1 count += consecutive return len(input_array) * (len(input_array) + 1) // 2 - count print(solve([5, 6, 7, 8], 7))
입력
[5, 6, 7, 8], 7
출력
4