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

Python에서 배열 요소가 O(n) 시간 및 O(1) 공간에서 연속적인지 확인(양수 및 음수 모두 처리)

<시간/>

nums라고 하는 정렬되지 않은 숫자의 배열이 있다고 가정합니다. 연속된 값을 포함하는지 여부를 확인해야 하며 음수도 지원해야 합니다.

따라서 입력이 nums =[-3, 5, 1, -2, -1, 0, 2, 4, 3]과 같으면 요소가 3, 4, 5, 6이므로 출력은 참이 됩니다. 7, 8.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 크기 :=숫자 크기
  • init_term :=inf
  • 0~크기 범위의 i에 대해
    • nums[i]
    • init_term :=nums[i]
  • ap_sum :=((크기 * (2 * init_term + (크기 - 1) * 1)) / 2)의 몫
  • total :=nums의 모든 요소의 합
  • ap_sum이 total과 같으면 true를 반환하고 그렇지 않으면 false를 반환
  • 이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    예시

    def solve(nums):
       size = len(nums)
       init_term = 999999
       for i in range(size):
          if nums[i] < init_term:
             init_term = nums[i]
       ap_sum = (size * (2 * init_term + (size - 1) * 1)) // 2
       total = sum(nums)
       return ap_sum == total
    nums = [-3, 5, 1, -2, -1, 0, 2, 4, 3] 
    print(solve(nums))

    입력

    [-3, 5, 1, -2, -1, 0, 2, 4, 3]

    출력

    True