Back to Leetcode

Readme

Greedy/2471.Minimum-Number-of-Operations-to-Sort-a-Binary-Tree-by-Level/Readme.md

latest785 B
Original Source

2471.Minimum-Number-of-Operations-to-Sort-a-Binary-Tree-by-Level

将属于同一个level的数字都收集起来。然后用Indexing sort的方法去贪心地交换。

比如说,对于一个乱序的nums数组,我们可以提前知道每个数字的期望位置rank[nums[i]]。我们就从前往后查看每一个位置,如果当前的rank[nums[i]]!=i,那么就把nums[i]与位于rank[nums[i]]的数字交换。这样的交换可以持续多次,直至我们在i这个位置上迎来期望的数字。

为什么一定能够迎来期望的数字呢?因为每一次交换,我们都把一个数字送到了它应该在的位置。一旦把n-1个数字都放到了它们对应期望的位置,那么i这个位置的数字一定也已经安排到了期望的数字。