当前位置: 代码迷 >> 综合 >> Leetcode 2231. Largest Number After Digit Swaps by Parity
  详细解决方案

Leetcode 2231. Largest Number After Digit Swaps by Parity

热度:64   发布时间:2023-11-26 05:59:06.0

题目

在这里插入图片描述

解法

将数据中的奇数和偶数分类,并且记录每个位置的奇偶性,按照奇偶性从大到小组成新的数字
时间复杂度O(nlogn),来源于排序。空间复杂度O(n)

class Solution:def largestInteger(self, num: int) -> int:if not num:return numeven_digits = []odd_digits = []deno = 10info = []while(num):mod = num % 10;num = num // 10if mod % 2 == 0:even_digits.append(mod)info.append('even')else:odd_digits.append(mod)info.append('odd')# print(even_digits,odd_digits)even_digits.sort(reverse = True)odd_digits.sort(reverse = True)info = info[::-1]p_even = 0p_odd = 0res = 0for i in range(len(info)):if info[i] == 'even':res = res * 10 + even_digits[p_even]p_even += 1else:res = res * 10 + odd_digits[p_odd]p_odd += 1return res
  相关解决方案