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

Python에서 배열 요소가 연속적인지 확인

<시간/>

num이라는 숫자 배열이 있다고 가정합니다. 연속된 값이 포함되어 있는지 확인해야 합니다.

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

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

  • 숫자의 크기가 1보다 작으면
    • 거짓을 반환
  • min_val :=최소값, max_val :=최대값
  • (max_val - min_val + 1)이 nums의 크기와 같으면
    • 0~숫자 크기 범위의 i에 대해
      • nums[i] <0이면
        • j:=-nums[i] - min_val
      • 그렇지 않으면
        • j :=nums[i] - 최소값
      • nums[j]> 0이면
        • nums[j] :=-nums[j]
      • 그렇지 않으면
        • 거짓을 반환
    • 참 반환
  • 거짓을 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

def solve(nums):
   if len(nums) < 1:
      return False
   min_val = min(nums)
   max_val = max(nums)
   if max_val - min_val + 1 == len(nums):
      for i in range(len(nums)):
         if nums[i] < 0:
            j = -nums[i] - min_val
         else:
            j = nums[i] - min_val
            if nums[j] > 0:
               nums[j] = -nums[j]
            else:
               return False
      return True
   return False
nums = [6, 8, 3, 5, 4, 7]
print(solve(nums))

입력

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

출력

True