校园网站设计与实现,老网站改版做别的,免费php空间国内,织梦手机网站建设2023每日刷题#xff08;二十七#xff09;
Leetcode—2471.逐层排序二叉树所需的最少操作数目 置换环解题思想
参考自网络 总交换次数 每一层最小交换次数之和 每一层元素个数 - 置换环数
实现代码
/*** Definition for a binary tree node.* struct TreeNode {* …2023每日刷题二十七
Leetcode—2471.逐层排序二叉树所需的最少操作数目 置换环解题思想
参考自网络 总交换次数 每一层最小交换次数之和 每一层元素个数 - 置换环数
实现代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int minimumOperations(TreeNode* root) {queueTreeNode* q;q.emplace(root);int ans 0;while(q.size()) {int len q.size();vectorint arr;while(len 0) {len--;auto u q.front();q.pop();arr.push_back(u-val);if(u-left ! nullptr) {q.push(u-left);}if(u-right ! nullptr) {q.push(u-right);}}// 置换环int n arr.size();vectorint p(n);iota(p.begin(), p.end(), 0);sort(p.begin(), p.end(), [](const int i, const int j){return arr[i] arr[j];});int cnt n;bool vis[n];memset(vis, false, sizeof(vis));for(auto i : p) {if(vis[i]) {continue;}while(!vis[i]) {vis[i] true;i p[i];}// 找到一个置换环cnt - 1;}ans cnt;}return ans;}
};运行结果 之后我会持续更新如果喜欢我的文章请记得一键三连哦点赞关注收藏你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 ↖(▔▽▔)↗感谢支持