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

파이썬에서 모든 짝수와 홀수를 각각 오름차순과 내림차순으로 정렬하는 프로그램

<시간/>

nums라는 숫자 목록이 있다고 가정하고 다음 기준을 유지하여 배열을 정렬해야 합니다.

  • 짝수는 오름차순으로 정렬됩니다.
  • 홀수는 내림차순으로 정렬됩니다.
  • 짝수와 홀수의 상대 위치는 변경되지 않아야 합니다.

따라서 입력이 [9, 14, 12, 91, -4, 5]와 같으면 출력은 [91, -4, 12, 9, 14, 5]

가 됩니다.

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

  • evens :=nums 배열의 짝수 항목 목록
  • odds :=nums 배열의 홀수 용어 목록
  • 짝수 목록 정렬
  • even_i :=0, odd_i :=0
  • 0에서 숫자 크기 범위의 인덱스에 대해
    • nums[index] mod 2가 0과 같으면
      • nums[index] :=evens[even_i]
      • even_i :=even_i + 1
    • 그렇지 않으면
      • nums[index] :=odds[odd_i]
      • odd_i :=odd_i + 1
  • 반환 번호

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

class Solution:
   def solve(self, nums):
      evens = [num for num in nums if num % 2 == 0]
      odds = [num for num in nums if num % 2 != 0]
      evens.sort()
      odds.sort(reverse=True)
      even_i = 0
      odd_i = 0
      for index in range(len(nums)):
         if nums[index] % 2 == 0:
            nums[index] = evens[even_i]
            even_i += 1
         else:
            nums[index] = odds[odd_i]
            odd_i += 1
      return nums
ob = Solution()
print(ob.solve([9, 14, 12, 91, -4, 5]))

입력

[9, 14, 12, 91, -4, 5]

출력

[91, -4, 12, 9, 14, 5]