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

최대 힙은 Python에 있습니까?

<시간/>

nums라는 숫자 목록이 있다고 가정하고 그것이 maxheap을 나타내는지 확인해야 합니다. 우리는 다음 규칙을 따를 것입니다 -

  • nums[i] =nums[2*i + 1] 2*i + 1이 범위 내에 있을 때
  • nums[i] =nums[2*i + 2] 2*i + 2가 범위 내에 있을 때

따라서 입력이 [5, 3, 4, 1, 2]와 같으면 출력은 True

가 됩니다.

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

  • 0 ~ (숫자 크기)/2 범위의 i에 대해
    • nums[i]>=nums[2*i+1]이 true가 아니면
      • 거짓을 반환
    • i*2+2 <=(숫자의 크기)-1이면
      • nums[i]>=nums[2*i+2]가 true가 아니면
        • 거짓을 반환
  • 참 반환

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

예시

class Solution:
   def solve(self, nums):
      for i in range(len(nums)//2):
         if not nums[i] >= nums[2*i+1]:
            return False
         if i*2+2 <= len(nums)-1:
            if not nums[i] >= nums[2*i+2]:
               return False
      return True
ob = Solution()
nums = [5, 3, 4, 1, 2]
print(ob.solve(nums))

입력

[5, 3, 4, 1, 2]

출력

True