Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

주어진 값보다 큰 집합의 수를 찾는 Python 프로그램

<시간/>

여러 정수를 포함하는 배열이 있다고 가정합니다. 주어진 숫자 배열에서 모든 인접한 하위 배열을 찾아 다른 목록에 넣습니다. 이제 각 하위 배열을 해당 하위 배열의 최대 요소로 바꿉니다. 또한 우리에게 주어진 숫자 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 :=카운트 + 연속

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