짝수 및 홀수 인덱스를 독립적으로 정렬

1706 단어 theabbieleetcodedsa
인덱스가 0인 정수 배열nums이 제공됩니다. 다음 규칙에 따라 nums의 값을 재정렬합니다.
  • nums의 홀수 인덱스에 있는 값을 증가하지 않는 순서로 정렬합니다.
  • 예를 들어 이 단계 이전에 nums = [4,**1**,2,**3**]이면 이후에는 [4,**3**,2,**1**]가 됩니다. 홀수 인덱스13의 값은 증가하지 않는 순서로 정렬됩니다.

  • nums의 짝수 인덱스에 있는 값을 감소하지 않는 순서로 정렬합니다.
  • 예를 들어 이 단계 이전에 nums = [**4**,1,**2**,3]이면 이후에는 [**2**,1,**4**,3]가 됩니다. 짝수 인덱스02의 값은 감소하지 않는 순서로 정렬됩니다.

  • nums 의 값을 재정렬한 후 형성된 배열을 반환합니다.

    예 1:

    입력: 숫자 = [4,1,2,3]
    출력: [2,3,4,1]
    설명:
    먼저 홀수 인덱스(1과 3)에 있는 값을 증가하지 않는 순서로 정렬합니다.
    따라서 숫자는 [4,1,2,3]에서 [4,3,2,1]로 변경됩니다.
    다음으로 짝수 인덱스(0과 2)에 있는 값을 감소하지 않는 순서로 정렬합니다.
    따라서 숫자는 [4,1,2,3]에서 [2,3,4,1]로 변경됩니다.
    따라서 값을 재정렬한 후 형성된 배열은 [2,3,4,1]입니다.

    예 2:

    입력: 숫자 = [2,1]
    출력: [2,1]
    설명:
    정확히 하나의 홀수 인덱스와 하나의 짝수 인덱스가 있으므로 값의 재배열이 발생하지 않습니다.
    형성된 결과 배열은 초기 배열과 동일한 [2,1]입니다.

    제약:
  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 100

  • 해결책:

    import heapq
    
    class Solution:
        def sortEvenOdd(self, nums: List[int]) -> List[int]:
            n = len(nums)
            evens = []
            odds = []
            for i in range(n):
                if i & 1:
                    heapq.heappush(odds, -nums[i])
                else:
                    heapq.heappush(evens, nums[i])
            for i in range(n):
                if i & 1:
                    nums[i] = -heapq.heappop(odds)
                else:
                    nums[i] = heapq.heappop(evens)
            return nums
    

    좋은 웹페이지 즐겨찾기