Leetcode 3644. Maximum K to Sort a Permutation
- Leetcode 3644. Maximum K to Sort a Permutation
- 1. 解题思路
- 2. 代码实现
- 题目链接:3644. Maximum K to Sort a Permutation
1. 解题思路
这一题核心在于说想明白要如何进行排序,问题的最终目标是将整个数组变得有序,因此原始数组当中所有位置与最终位置不同的数都需要被重新排序,也就是说这其中的任意两个数的位和的结果均至少要大于等于kkk,否则就不存在一种交换方式能够交换这两个数。
因此,我们将所有位置不对的数计算一下位和的结果,这个值就会是kkk能够取到的最大值。然后我们就只需要证明这个kkk确实可以将所有的数置换为有序数组。这其实也很直接,我们将kkk单取出来,然后与每一个数进行一下交换,将其换到对应的位置即可。
综上,证明完毕,我们将所有的位置不对的数计算一下位和的结果,就是最终答案kkk。
2. 代码实现
给出python代码实现如下:
class Solution:def sortPermutation(self, nums: List[int]) -> int:snums = sorted(nums)ans = -1for x, y in zip(nums, snums):if x == y:continueif ans == -1:ans = xelse:ans = ans & xreturn ans if ans != -1 else 0
提交代码评测得到:耗时44ms,占用内存29.60MB。