Leetcode 3551. Minimum Swaps to Sort by Digit Sum
- Leetcode 3551. Minimum Swaps to Sort by Digit Sum
- 1. 解题思路
- 2. 代码实现
- 题目链接:3551. Minimum Swaps to Sort by Digit Sum
1. 解题思路
这一题思路上我实现的非常暴力,就是先求出正确的排列,然后从头考察每一个元素是否处在其目标位置上,如果没有,则给出一次置换。
2. 代码实现
给出python代码实现如下:
class Solution:def minSwaps(self, nums: List[int]) -> int:n = len(nums)def fn(num):return sum(int(digit) for digit in str(num))index = {x: i for i, x in enumerate(nums)}sorted_nums = sorted(nums, key=lambda x: (fn(x), x))ans = 0for i in range(n):if nums[i] == sorted_nums[i]:continuex, y = nums[i], sorted_nums[i]j = index[y]nums[i], nums[j] = y, xindex[x] = jindex[y] = ians += 1return ans
提交代码评测得到:耗时1894ms,占用内存45.8MB。