【Leetcode】2471. Minimum Number of Operations to Sort a Binary Tree by Level
admin
2024-01-30 01:34:07
0

题目地址:

https://leetcode.com/problems/minimum-number-of-operations-to-sort-a-binary-tree-by-level/description/

给定一个值互不相等的二叉树,可以对每一行进行重排,重排的过程中每一步允许交换两个节点的值,问要将整棵树的每一行都变成严格单调增,至少需要多少步。

问题最后划归为,给定一个数字各不相同的数组AAA,允许交换两个数的位置,要将其升序排列至少需要多少步。这是个经典的数学问题。先将AAA进行保序离散化,最小值离散化为000(为111也可以,如果为111那就将离散化之后的数组视为1∼n1\sim n1∼n上的置换。为000则视为0∼n−10\sim n-10∼n−1上的置换),将AAA视为一个置换,如果其恰好是一个轮换,那么最少交换次数即为这个轮换的长度减111(即元素个数减111)证明可以参考https://blog.csdn.net/qq_46105170/article/details/119366423。如果AAA不是一个轮换而是多个轮换的乘积,则交换次数即为每个轮换的元素减111再求总和。代码如下:

class Solution {public:int minimumOperations(TreeNode* root) {if (!root) return 0;int res = 0;queue q;q.push(root);while (q.size()) {vector v, ids;for (int i = q.size(); i--;) {auto t = q.front();q.pop();v.push_back(t->val);ids.push_back(ids.size());if (t->left) q.push(t->left);if (t->right) q.push(t->right);}sort(ids.begin(), ids.end(), [&](int i, int j) { return v[i] < v[j]; });for (int i = 0; i < ids.size(); i++) {if (ids[i] == -1) continue;int x = ids[i], len = 0;while (~ids[x]) {len++;int y = x;x = ids[y];ids[y] = -1;}res += len - 1;}}return res;}
};

时间复杂度O(∑inilog⁡ni)O(\sum_i n_i\log n_i)O(∑i​ni​logni​),nin_ini​为二叉树每一行的节点个数,空间O(n)O(n)O(n),nnn为节点总个数。

相关内容

热门资讯

我来教大家“东乡麻将辅助器ap... 您好,东乡麻将这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“熊猫正版辅助器ap... 您好,熊猫正版这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“乐星跑胡子辅助器a... 您好,乐星跑胡子这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中...
我来教大家“小闲54棋牌辅助器... 我来教大家“小闲54棋牌辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第...
我来教大家“闲逸游戏辅助器ap... 您好,闲逸游戏这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“六六内蒙麻将辅助器... 您好,六六内蒙麻将这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏...
我来教大家“wepoker俱乐... 亲,wepoker俱乐部这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,wepok...
我来教大家“天府麻舍辅助器ap... 我来教大家“天府麻舍辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方...
我来教大家“金钻棋牌辅助器ap... 我来教大家“金钻棋牌辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方...
我来教大家“瀚海麻将辅助器ap... 我来教大家“瀚海麻将辅助器app官方下载最新版本更新”详细分享开挂一、瀚海麻将AI软件牌型概率发牌机...
我来教大家“海浪手游辅助器ap... 亲,海浪手游这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,海浪手游的开挂软件,名...
我来教大家“若水欢乐麻将辅助器... 亲,若水欢乐麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,若水欢乐麻将的开挂...
我来教大家“决胜游戏辅助器ap... 亲,决胜游戏这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,决胜游戏的开挂软件,名...
我来教大家“红龙扑克辅助器ap... 您好,红龙扑克这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“天天松滋麻将辅助器... 我来教大家“天天松滋麻将辅助器app官方下载最新版本更新”详细分享开挂一、天天松滋麻将AI软件牌型概...
我来教大家“越记乡游辅助器ap... 您好,越记乡游这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“大发快三辅助器ap... 亲,大发快三这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,大发快三的开挂软件,名...
我来教大家“沐晖麻将辅助器ap... 我来教大家“沐晖麻将辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方...
我来教大家“桔子游玩辅助器ap... 您好,桔子游玩这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“滇麻圈辅助器app... 我来教大家“滇麻圈辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方神...