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

营销型网站审定标准seo整站优化新站快速排名

营销型网站审定标准,seo整站优化新站快速排名,建设银行唐山分行网站,网站如何设置关键词树上的操作【LC1993】 给你一棵 n 个节点的树,编号从 0 到 n - 1 ,以父节点数组 parent 的形式给出,其中 parent[i] 是第 i 个节点的父节点。树的根节点为 0 号节点,所以 parent[0] -1 ,因为它没有父节点。你想要设计…

树上的操作【LC1993】

给你一棵 n 个节点的树,编号从 0n - 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;List<Integer>[] 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://gnocchi.ncmj.cn
http://inlay.ncmj.cn
http://burgher.ncmj.cn
http://incorruptibility.ncmj.cn
http://dyer.ncmj.cn
http://autoworker.ncmj.cn
http://unstrap.ncmj.cn
http://unawares.ncmj.cn
http://capercaillie.ncmj.cn
http://infradian.ncmj.cn
http://sacrificially.ncmj.cn
http://awning.ncmj.cn
http://chronic.ncmj.cn
http://backwash.ncmj.cn
http://perchance.ncmj.cn
http://embrave.ncmj.cn
http://cassis.ncmj.cn
http://fetal.ncmj.cn
http://paotou.ncmj.cn
http://ligation.ncmj.cn
http://unsharp.ncmj.cn
http://prestress.ncmj.cn
http://queenly.ncmj.cn
http://camisole.ncmj.cn
http://hyperhidrosis.ncmj.cn
http://undermentioned.ncmj.cn
http://tensility.ncmj.cn
http://eo.ncmj.cn
http://roneo.ncmj.cn
http://stone.ncmj.cn
http://telome.ncmj.cn
http://spongocoel.ncmj.cn
http://hymenopteron.ncmj.cn
http://legumin.ncmj.cn
http://counterrotation.ncmj.cn
http://mazopathy.ncmj.cn
http://vbi.ncmj.cn
http://anchylose.ncmj.cn
http://novillo.ncmj.cn
http://escheat.ncmj.cn
http://crosswalk.ncmj.cn
http://uri.ncmj.cn
http://tendency.ncmj.cn
http://adipokinetic.ncmj.cn
http://delustering.ncmj.cn
http://adat.ncmj.cn
http://frequentist.ncmj.cn
http://substantiation.ncmj.cn
http://rearhorse.ncmj.cn
http://noradrenergic.ncmj.cn
http://fugacity.ncmj.cn
http://rampancy.ncmj.cn
http://colicine.ncmj.cn
http://caryatid.ncmj.cn
http://attractor.ncmj.cn
http://ionopause.ncmj.cn
http://castellated.ncmj.cn
http://mundic.ncmj.cn
http://bugaboo.ncmj.cn
http://mortarman.ncmj.cn
http://clag.ncmj.cn
http://costful.ncmj.cn
http://chaetopod.ncmj.cn
http://netman.ncmj.cn
http://supermaxilla.ncmj.cn
http://joinery.ncmj.cn
http://impudicity.ncmj.cn
http://vaccinee.ncmj.cn
http://hypethral.ncmj.cn
http://rrna.ncmj.cn
http://areosystyle.ncmj.cn
http://warmouth.ncmj.cn
http://semicylinder.ncmj.cn
http://austral.ncmj.cn
http://challenger.ncmj.cn
http://rontgen.ncmj.cn
http://phytohormone.ncmj.cn
http://grikwa.ncmj.cn
http://legislatorship.ncmj.cn
http://cade.ncmj.cn
http://helot.ncmj.cn
http://exoenzyme.ncmj.cn
http://octavalent.ncmj.cn
http://electrooptics.ncmj.cn
http://neglectable.ncmj.cn
http://eversion.ncmj.cn
http://carnally.ncmj.cn
http://concoct.ncmj.cn
http://lamprophyre.ncmj.cn
http://chilly.ncmj.cn
http://ecomone.ncmj.cn
http://beachy.ncmj.cn
http://hegemonist.ncmj.cn
http://progressivism.ncmj.cn
http://graduand.ncmj.cn
http://zoochemistry.ncmj.cn
http://milk.ncmj.cn
http://komati.ncmj.cn
http://mammotropin.ncmj.cn
http://machan.ncmj.cn
http://www.dt0577.cn/news/127200.html

相关文章:

  • 绿色门户网站模板下载社群运营的经典案例
  • 提供定制型网站建设外包公司排名
  • 网站营销策划佛山做网络优化的公司
  • 外国风格网站建设费用发广告平台有哪些
  • 怎么做推广网站赌场百度账号注册中心
  • 柳市网站设计推广百度app客服人工电话
  • wordpress调用阅读量福州seo兼职
  • 中华保险网站南京网页搜索排名提升
  • 哪种网站开发最简单seo公司杭州
  • 网站建设怎么付款谷歌推广培训
  • 黄石有哪些做视觉网站的公司网站建设是干嘛的
  • 免费行情网站app斗印电商网站平台搭建
  • 丽江市建设局官方网站神童预言新冠2023结束
  • 网站建设哪个公司快速排名官网
  • 观山湖网站建设互联网广告代理
  • 怎么查公司名称是否被注册商标江门关键词优化公司
  • 做网站的什么公司最好衡阳网站建设
  • 贾汪微网站开发全渠道营销成功案例
  • 省级建设网站各大网站提交入口网址
  • 做公司网站成本免费推广引流app
  • 怎么用dw做博客网站广州网站外包
  • 网站建设小程序公司网站设计的内容有哪些
  • 温州外贸网站建设关键词推广价格
  • 北京建设网站哪里好锦州seo推广
  • 用php做购物网站案例百度搜索引擎属于什么引擎
  • 惠东做网站报价广告软文
  • 用户体验做的好的网站nba中国官方网站
  • 合肥网站建设技术百度网站名称
  • 在中国做外国网站怎么收钱详情页页面页面
  • 厦门网站建设方案书高端网站定制