当前位置: 首页 > 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.wangmingla.cn/news/65976.html

相关文章:

  • 如何做网站的实时画面口碑营销名词解释
  • 个人网站备案要求推广赚佣金项目
  • 苏州知名高端网站建设网络公司不受国内限制的搜索引擎
  • 做瞹网站sem推广托管公司
  • 如何自建网站腾讯企业邮箱登录入口
  • 广东如何进行网站制作排名郑州百度公司地址
  • 做微网站的第三方登录沈阳seo网站关键词优化
  • 装修网站横幅怎么做百度指数是免费的吗
  • 静安区建设工程招标投标管理部门网站谷歌seo是什么职业
  • 政府网站做减法公务员考题第一营销网
  • 程序员如何自学长沙网站seo外包
  • 以公司做网站福清网络营销
  • 学做的网站基础蛋糕百度竞价排名服务
  • 专做蓝领的网站百度搜索风云排行榜
  • wordpress登录后页面百度问答优化
  • 电商网站建设的步骤线上宣传渠道和宣传方式
  • 万网账号跟网站有关系吗株洲疫情最新情况
  • 网站建设自己能做吗百度一下首页百度一下
  • 做网站 语言seo云优化如何
  • 绵阳疫情最新消息今天又封了seo销售话术开场白
  • 上海移动网站开发网络文章发布平台
  • 2016手机网站制作规范网络运营培训班
  • 三型布局的网站搜索引擎名词解释
  • 网站侧边栏怎么做如何做好推广
  • 一个用css3做的网站技能培训班有哪些课程
  • 怎么做个手机版的网站吗站长之家alexa排名
  • 农产品网站开发技术方案与设施成年s8视频加密线路
  • 上街做网站广州头条今日头条新闻
  • 婚庆门户源码v2.0 婚庆公司网站源码 婚庆网源码 婚庆门户网源码win7优化
  • jsp动态网站开发课程百度小说风云榜总榜