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

网络营销产品的五个层次百度站长seo

网络营销产品的五个层次,百度站长seo,做视频网站 服务器,江苏建设官方网站【力扣】2127. (分类讨论 拓扑排序)参加会议的最多员工数 文章目录 【力扣】2127. (分类讨论 拓扑排序)参加会议的最多员工数1. 题目介绍2. 思路(**分类讨论 拓扑排序**)3. 解题代码4. Danger参考 1. 题…

【力扣】2127. (分类讨论 + 拓扑排序)参加会议的最多员工数

文章目录

  • 【力扣】2127. (分类讨论 + 拓扑排序)参加会议的最多员工数
    • 1. 题目介绍
    • 2. 思路(**分类讨论 + 拓扑排序**)
    • 3. 解题代码
    • 4. Danger
    • 参考

1. 题目介绍

一个公司准备组织一场会议,邀请名单上有 n 位员工。公司准备了一张 圆形 的桌子,可以坐下 任意数目 的员工。

  • 要求:员工编号为 0 到 n - 1 。每位员工都有一位 喜欢 的员工,每位员工当且仅当他被安排在喜欢员工的旁边,他才会参加会议每位员工喜欢的员工 不会 是他自己

  • 给你一个下标从 0 开始的整数数组 favorite ,其中 favorite[i] 表示第 i 位员工喜欢的员工。

  • 请你返回参加会议的 最多员工数目 。

示例

  • 1
    在这里插入图片描述
  • 2
    在这里插入图片描述
  • 3
    在这里插入图片描述

提示
在这里插入图片描述

2. 思路(分类讨论 + 拓扑排序

首先需要简单了解一下 基环内向树。在了解了树的基础上来解释基环树——树加一条边使之成环(也就是说,在严格意义上来说,基环树并不是树,就像老婆饼没有老婆一样,基环树是个图)。首先它是一个有向图,它构成类似基环树的结构。

  • 最重要的特点就是每个点都有且只有一个出度,并且环外的节点方向指向环内。
    在这里插入图片描述

针对这道题,我们可以把每个员工看成图上的一个节点,如果员工 x 喜欢员工 y,就在从 x 对应的节点到 y 对应的节点连一条边,那么形成的图则是会由若干颗「基环内向树」组成,就是形如下图所示的结构:
在这里插入图片描述
原因如下:

  • 我们从任意一个节点 x 开始在图上进行「游走」,由于每个员工只有一位喜欢的员工,因此每个节点在图上只会有一条出边,即「游走」的过程是唯一的。由于图上有 n 个节点,因此在 n+1 步以内,一定会走到一个重复的节点,那么在第一次经过该节点之后,到第二次经过该节点之前的所有节点,以及该节点本身,就组成了一个环,如上图的蓝色节点所示。
  • 对于不在环上的节点,我们已经说明了从它们开始「游走」也一定会进入到环中。在到达环上的节点之前,它们不会重复经过节点(否则就有两个环了,我们可以证明一个连通分量中是不可能有两个环的:因为每个节点只有一条出边,因此如果有两个环并且它们连通,那么必然某个环上有一个点有两条出边,一条出边指向同一个环上的节点,另一条出边可以使得它到达另一个环,这就产生了矛盾),那么它们就形成了类似树的结构,如上图的绿色节点所示。
  • 需要注意的是,一个单独的环也是「基环内向树」,它是一种特殊情况,即没有绿色的节点。

思路与算法:既然我们知道了图由若干颗「基环内向树」组成,那么我们只需要计算每一颗「基环内向树」的哪一部分可以被安排参加会议,就可以来接这道题目。

  • 1)首先讨论特殊的情况,即一个单独的环(或若干个环),并且所有环的大小都 ≥3。可以发现,我们按照环上的顺序给对应的员工安排座位是满足要求的,因为对于每一个环上的员工,它喜欢的员工就在它的旁边。并且,我们必须安排环上的所有员工,因为如果有缺失,那么喜欢那位缺失了的员工的员工就无法满足要求了。
    • 但如果我们已经安排了某一个环上的所有员工,剩余的环就没有办法安排了。这是因为已经安排的那个环是没有办法被「断开」的:断开的本质就是相邻位置员工的缺失。因此,我们可以得出一个重要的结论:
      • 如果我们想安排大小 ≥3 的环,我们最多只能安排一个,并且环需要是完整的
  • 2)接下来是,形成的图是 环大小 ≥3 的「基环内向树」,如果我们安排了不在环上的节点,那么从该节点开始,我们需要不断安排当前节点喜欢的员工,这实际上就是「游走」的过程。
    • 而当我们游走到环上并到达环上最后一个未经过的节点时,该节点的下一个节点(即喜欢的员工)已经被安排过,所以最后一个未经过的节点就无法被安排(因为下一个节点不是他的喜欢节点),不满足要求。因此,我们不能安排任何不在环上的节点,只能安排在环上的节点,就得出了另一个的结论:
      • 所有环大小 ≥3 的「基环内向树」与一个大小相同(指环的部分)的环是等价的。
  • 3)最后,需要考虑大小 =2 的环或者「基环内向树」了。
    • 这里的特殊之处在于,大小 =2 的环可以安排多个:因为环上的两个点是互相喜欢的,因此只需要它们相邻即可,而没有其它的要求。
    • 而对于环大小 =2 的「基环内向树」,如果我们安排了不在环上的节点,那么游走完环上两个节点之后,同样是满足要求的,并且我们甚至可以继续延伸(反向「游走」),到另一个不在环上的节点为止。如下图所示,包含 X 的节点就是可以安排参加会议的节点。
      在这里插入图片描述
    • 并且同样地,对于每一棵环大小 =2 的「基环内向树」,我们都可以取出这样一条「双向游走」路径进行安排,它们之间不会影响。

综上所述,原问题的答案即为下面二者中的最大值:

  • 最大的环的大小;
  • 所有环大小 =2 的「基环内向树」上的最长的「双向游走」路径之和。

为了求解「基环内向树」上的最长的「双向游走」路径,我们可以使用拓扑排序 + 动态规划的方法。记 f[i] 表示到节点 i 为止的最长「游走」路径经过的节点个数,那么状态方程即为:
在这里插入图片描述

  • 即我们考虑节点 i 的上一个节点 j,在图中必须有从 j 到 i 的一条有向边,这样我们就可以从 j 转移到 i。如果不存在满足要求的 j(例如「基环内向树」退化成一个大小 =2 的环),那么 f[i]=1。状态转移可以和拓扑排序同时进行。
  • 在拓扑排序完成后,剩余没有被弹出过队列的节点就是环上的节点。我们可以找出每一个环。如果环的大小 ≥3,我们就用其来更新最大的环的大小;如果环的大小 =2,设环上的两个节点为 x 和 y,那么该「基环内向树」上最长的「双向游走」的路径长度就是 f[x]+f[y]。

时间复杂度:O(n)。图中有 n 个节点和 n 条边,拓扑排序需要的时间为 O(n),后续找出所有环的时间也为 O(n)。
空间复杂度:O(n)。我们需要若干个长度为 n 的数组。

3. 解题代码

class Solution:def maximumInvitations(self, favorite: List[int]) -> int:n = len(favorite)# 统计入度,便于进行拓扑排序indeg = [0] * nfor i in range(n):indeg[favorite[i]] += 1used = [False] * nf = [1] * nq = deque(i for i in range(n) if indeg[i] == 0)while q:u = q.popleft()used[u] = Truev = favorite[u]# 状态转移f[v] = max(f[v], f[u] + 1)indeg[v] -= 1if indeg[v] == 0:q.append(v)# ring 表示最大的环的大小# total 表示所有环大小为 2 的「基环内向树」上的最长的「双向游走」路径之和ring = total = 0for i in range(n):if not used[i]:j = favorite[i]# favorite[favorite[i]] = i 说明环的大小为 2if favorite[j] == i:total += f[i] + f[j]used[i] = used[j] = True# 否则环的大小至少为 3,我们需要找出环else:u = icnt = 0while True:cnt += 1u = favorite[u]used[u] = Trueif u == i:breakring = max(ring, cnt)return max(ring, total)

4. Danger

力扣(LeetCode)是领扣网络旗下专注于程序员技术成长和企业技术人才服务的品牌。源自美国硅谷,力扣为全球程序员提供了专业的IT技术职业化提升平台,有效帮助程序员实现快速进步和长期成长。此外,力扣(LeetCode)致力于解决程序员技术评估、培训、职业匹配的痛点,逐步引领互联网技术求职和招聘迈向专业化。

  • 据了解到的情况,Easy题和Medium 题在面试中比较常见,通常会以手写代码之类的形式出现,您需要对问题进行分析并给出解答,并于面试官进行交流沟通,有时还会被要求分析时间复杂度8与空间复杂度°,面试官会通过您对题目的分析解答,了解您对常用算法的熟悉程度和您的程序实现功底。
  • 而在一些对算法和程序实现功底要求较高的岗位,Hard 题也是很受到面试官的青睐,如果您在面试中成功Bug-Free出一道Hard题,我们相信您一定会给面试官留下很深刻的印象,并极大增加拿到Offer的概率,据相关人士统计,如果您在面试成功解出一道Hard题,拿不到Offer的概率无限接近于0。
  • 所以,力扣中Easy和Medium相当于面试中的常规题,而Hard 则相当于面试中较难的题,解出—道Hard题,Offer可以说是囊中之物。

参考

【1】https://leetcode.cn/problems/maximum-employees-to-be-invited-to-a-meeting/?envType=daily-question&envId=2023-11-01
【2】https://leetcode.cn/problems/maximum-employees-to-be-invited-to-a-meeting/solutions/1190222/can-jia-hui-yi-de-zui-duo-yuan-gong-shu-u8e8u/

http://www.ds6.com.cn/news/58537.html

相关文章:

  • 大淘客网站上的推广怎么做深圳知名网络优化公司
  • 麻辣烫配方教授网站怎么做西部数码域名注册
  • wordpress伪静态教程志鸿优化网下载
  • 阿里网站建设工具chinaz站长素材
  • wordpress functions.php 在哪青岛网站建设优化
  • 外国人做汉字网站网站优化入门
  • 个人做论坛网站广州商务网站建设
  • 建筑人工作网如何做优化排名
  • SEO案例网站建设怎么引流客源最好的方法
  • 外贸平台语言单一化上海aso苹果关键词优化
  • 湾里南昌网站建设公司自动seo优化
  • 西安有哪些做网站建设的公司产品营销策略怎么写
  • 做自适应网站注意事项杭州seo排名
  • ui设计是什么软件什么是搜索引擎优化seo
  • 网站 栏目管理正规推广平台
  • 有没有代做ppt的网站海南网站推广
  • 网站允许flash国内可访问的海外网站和应用
  • 好的网站开发培训网站运营主要做什么工作
  • 公司做网站需要准备什么资料体彩足球竞彩比赛结果韩国比分
  • 东营网站排名优化公司小姐关键词代发排名
  • 付网站建设服务费什么科目近三天的国内外大事
  • 做竞拍网站常州百度seo排名
  • 建材公司网站建设案例搜索引擎优化专员
  • 佛山网站建设在哪企业推广的网站
  • 注册域名以后怎么做网站企业网站设计与推广
  • 烟台网站建设合肥公司谷歌seo网站优化
  • 网站开发相关技术沈阳百度推广排名优化
  • 淘宝网站制作建设是真的吗普通话手抄报文字内容
  • iis建设网站教程竞价网络推广培训
  • 孟村网 网站百度浏览器网址大全