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
- nums[index] mod 2가 0과 같으면
- 반환 번호
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
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]