当前位置: 首页 > news >正文

武昌网站制作公司wordpress仿社区

武昌网站制作公司,wordpress仿社区,wordpress编辑颜色,网站建设竞价托管树上的操作【LC1993】 给你一棵 n 个节点的树#xff0c;编号从 0 到 n - 1 #xff0c;以父节点数组 parent 的形式给出#xff0c;其中 parent[i] 是第 i 个节点的父节点。树的根节点为 0 号节点#xff0c;所以 parent[0] -1 #xff0c;因为它没有父节点。你想要设计…树上的操作【LC1993】 给你一棵 n 个节点的树编号从 0 到 n - 1 以父节点数组 parent 的形式给出其中 parent[i] 是第 i 个节点的父节点。树的根节点为 0 号节点所以 parent[0] -1 因为它没有父节点。你想要设计一个数据结构实现树里面对节点的加锁解锁和升级操作。 数据结构需要支持如下函数 **Lock**指定用户给指定节点 上锁 上锁后其他用户将无法给同一节点上锁。只有当节点处于未上锁的状态下才能进行上锁操作。 **Unlock**指定用户给指定节点 解锁 只有当指定节点当前正被指定用户锁住时才能执行该解锁操作。 Upgrade 指定用户给指定节点 上锁 并且将该节点的所有子孙节点 解锁 。只有如下 3 个条件 全部 满足时才能执行升级操作 指定节点当前状态为未上锁。指定节点至少有一个上锁状态的子孙节点可以是 任意 用户上锁的。指定节点没有任何上锁的祖先节点。 请你实现 LockingTree 类 LockingTree(int[] parent) 用父节点数组初始化数据结构。lock(int num, int user) 如果 id 为 user 的用户可以给节点 num 上锁那么返回 true 否则返回 false 。如果可以执行此操作节点 num 会被 id 为 user 的用户 上锁 。unlock(int num, int user) 如果 id 为 user 的用户可以给节点 num 解锁那么返回 true 否则返回 false 。如果可以执行此操作节点 num 变为 未上锁 状态。upgrade(int num, int user) 如果 id 为 user 的用户可以给节点 num 升级那么返回 true 否则返回 false 。如果可以执行此操作节点 num 会被 升级 。 思路 使用数组记录每个节点的父节点以及上锁状态并使用list记录每个节点的孩子节点方便dfs操作 lock和unlock函数进行简单判断即可upgrade函数需要判断祖先节点是否上锁再通过dfs判断是否有上锁的孩子节点并将其解锁 实现 class LockingTree {// 记录每个节点的根节点以及加锁状态int[] locked;int[] parent;int n;ListInteger[] children;public LockingTree(int[] parent) {this.n parent.length;this.parent parent;this.locked new int[n];this.children new List[n];Arrays.fill(locked, -1);Arrays.setAll(children, e - new ArrayList());for (int i 0; i n; i){if (parent[i] ! -1){children[parent[i]].add(i);}}}public boolean lock(int num, int user) {if (locked[num] ! -1) return false;locked[num] user;return true;}public boolean unlock(int num, int user) {if (locked[num] user){locked[num] -1;return true;}return false;}public boolean upgrade(int num, int user) {if (locked[num] ! -1) return false;// 判断祖先节点是否上锁int p parent[num];while (p ! -1){if (locked[p] ! -1) return false;p parent[p];}// 判断是否有子孙节点加锁了并给子孙节点解锁boolean[] res {false};dfs(num, res);if (res[0] false) return false;locked[num] user;return true;}public void dfs(int p, boolean[] lock){for (int u : children[p]){if (locked[u] ! -1){lock[0] true;locked[u] -1; }dfs(u, lock);}} }/*** Your LockingTree object will be instantiated and called as such:* LockingTree obj new LockingTree(parent);* boolean param_1 obj.lock(num,user);* boolean param_2 obj.unlock(num,user);* boolean param_3 obj.upgrade(num,user);*/复杂度 时间复杂度 n n n为二叉树的节点数目lock和unlock为 O ( n ) \mathcal{O}(n) O(n)upgrade为 O ( 1 ) \mathcal{O}(1) O(1)空间复杂度 O ( n ) \mathcal{O}(n) O(n)
http://www.dnsts.com.cn/news/141753.html

相关文章:

  • dede网站建设教程云盘百度 验证网站
  • 济南正规网站建设公司哪家好网站备案完了怎么做
  • 中国建设银行龙卡信用卡网站四川省建设部网站
  • 制作一个简单的php网站网站建设规划方案.ppt
  • 国际旅游网站设计报告济南做网站的好公司有哪些
  • 哪个素材网站免费长沙高端网站建设品牌
  • 网站上打广告济南网站seo哪家公司好
  • 模板网站有哪几类购物网站设计目的
  • 快注销网站网站怎样才能在百度被搜索到
  • 南京本地网站建站广东网站建设微信官网开发
  • 专业做设计的网站赣州市网站开发
  • intellij 网站开发如何给喜欢的明星做网站
  • delphi网站开发教程网站建设工作室创业计划书
  • 一元夺宝网站制作视频房地产估价师考试
  • 网站开发女生可以做吗应用软件开发属于什么行业
  • 进行公司网站建设方案微信商城小程序开发一般需要多少钱
  • 自适应网站的缺点上海网页制作报价
  • 网站的图片大小国家住房城乡建设厅网站
  • 服装电子商务网站建设微信表情开放平台官网登录
  • 青岛网站建设eoeeoe响应式网站能用dw做吗
  • 如何给网站做404页面怎么知道网站有没有做301重定向
  • 我国档案网站建设怎样做好公司网站
  • 生成图标网站家具网站php源码
  • 做京挑客的网站有哪些最开放的浏览器下载
  • 深圳三站合一网站建设河南房产网站建设
  • 网站建设管理招聘amz123
  • 如何编辑做网站wordpress 笔记本主题下载失败
  • 什么叫网站收录电子商务主要干什么
  • 网站建设需要的客户资料海东地区网络推广器
  • 做消防哪些网站找工作桂林建站