某华为hr擅自给我报名机

某华为hr擅自报名机考

上周,牛客网一位同学爆料:

今年一月份,华为一位 HR 通过某招聘网站联系到他,然后通过该 HR 加上了业务工程师的微信。随后,该工程师在「经过他本人同意」的情况下,在系统录入了他的简历和身份证。结果,HR 在「没有和他本人沟通,也没和业务工程师沟通」的情况下,擅自在系统里触发了机考流程。

这位同学还在帖子里晒出了聊天记录截图:

当事人与 HR 的聊天截图
当事人与 HR 的聊天截图
当事人与 HR 的聊天截图
当事人与 HR 的聊天截图

在我看来,候选人生气是应该的,而且生气的原因,极有可能不是因为不想去华为,而是想去华为

在没有与候选人沟通的情况下,HR 于情于理都不该进行这样的操作。

至少要确认给候选人定的机试时间是否合适,这是必须的。

根据帖子回复,这位同学目前正在寻求举报该 HR 的合适渠道。

关于该华为 HR 的行为,你怎么看?

...

回归主线。

来一道和「字节跳动」相关的算法原题。

题目描述

平台:LeetCode

题号:2246

给你一棵 树(即一个连通、无向、无环图),根节点是节点 0,这棵树由编号从 0n - 1n 个节点组成。

用下标从 0 开始、长度为 n 的数组 parent 来表示这棵树,其中 parent[i] 是节点 i 的父节点,由于节点 0 是根节点,所以 parent[0] = -1

另给你一个字符串 s,长度也是 n,其中 s[i] 表示分配给节点 i 的字符。

请你找出路径上任意一对相邻节点都没有分配到相同字符的 最长路径 ,并返回该路径的长度。

示例 1: alt

输入:parent = [-1,0,0,1,1,2], s = "abacbe"

输出:3

解释:任意一对相邻节点字符都不同的最长路径是:0 -> 1 -> 3 。该路径的长度是 3 ,所以返回 3 。
可以证明不存在满足上述条件且比 3 更长的路径。 

示例 2: alt

输入:parent = [-1,0,0,0], s = "aabc"

输出:3

解释:任意一对相邻节点字符都不同的最长路径是:2 -> 0 -> 3 。该路径的长度为 3 ,所以返回 3 。

提示:

  • 对所有 i >= 10 <= parent[i] <= n - 1 均成立
  • parent 表示一棵有效的树
  • s 仅由小写英文字母组成

DFS

起始先用 parent 进行建图,随后设计 DFS 函数来求解每个节点“往下”的最长路径:将当前节点 cur 作为传入参数,返回以节点“往下”的最长路径。

这是一个由子节点最长路径推导父节点最长路径的「自下而上」的推导过程。

先来关注该 DFS 的功能本身:

假设当前处理到的节点为 u,将要访问到的节点为 j。递归调用 DFS 函数拿到以节点 j 为根节点时的“往下”最大路径 t,并执行如下处理流程:

  • 若节点 j 和节点 u 对应字符相同,说明将节点 j 拼接在节点 u 后面并非合法路径,跳过处理
  • 否则使用 t 来更新以当前节点 u 为根时,最大的“往下”子路径 res(该值初始值为 0

当处理完节点 u 的所有子节点,我们 res + 1 即是函数返回值(含义为在合法的最长路径本身拼接节点 u)。

再来关注 DFS 过程中,如何计算问题答案:

DFS 函数中,我们递归处理了所有节点,而「在真实最长路径在原树中的最高点」,自然也是被处理到的。

alt

这引导我们可以在单次递归,处理当前节点时,使用变量 l1l2 分别记录当前节点的「最大子路径」和「次大子路径」。

在处理完当前节点后,1 + l1 + l2 即是以当前节点作为路径最高点时的最大路径长度(含义为在合法「最大子路径」和「次大子路径」基础上拼接当前节点),用其更新全局变量 ans

代码:

class Solution {
    int N = 100010, M = N, idx = 0, ans = 1;
    int[] he = new int[N], e = new int[M], ne = new int[M];
    char[] cs;
    void add(int a, int b) {
        e[idx] = b;
        ne[idx] = he[a];
        he[a] = idx++;
    }
    public int longestPath(int[] parent, String s) {
        Arrays.fill(he, -1);
        for (int i = 1; i < parent.length; i++) add(parent[i], i);
        cs = s.toCharArray();
        dfs(0);
        return ans;
    }
    int dfs(int u) {
        int res = 0;
        int l1 = 0, l2 = 0;
        for (int i = he[u]; i != -1; i = ne[i]) {
            int j = e[i];
            int t = dfs(j);
            if (cs[u] == cs[j]) continue;
            if (t > l1) {
                l2 = l1; l1 = t;
            } else if (t > l2) {
                l2 = t;
            }
            res = Math.max(res, t);
            ans = Math.max(ans, 1 + l1 + l2);
        }
        return res + 1;
    }
}
  • 时间复杂度:
  • 空间复杂度:

树形 DP

自然也是能够使用「树形 DP」思路来做。

只不过对于「定根树形 DP」来说,往往一遍 DFS 就能实现 做法。例如 124. 二叉树中的最大路径和。

而「换根树形 DP」则只能通过对“方向”的拆分,用两遍 DFS 来进行求解。例如 310. 最小高度树 和 834. 树中距离之和。

在「定根树形 DP」题目中采用「换根树形 DP」做法,无论是从执行流程还是编码来说,都稍显“多余”(毕竟一次 DFS 就能以「最佳路径的最高点必然能够被处理」来得证答案的正确性),但在验证大家是否真正掌握「树形 DP」精髓来说,却有极大意义。

代码:

class Solution {
    int N = 100010, M = N, idx = 0;
    int[] he = new int[N], e = new int[M], ne = new int[M];
    char[] cs;
    int[] f1 = new int[N], f2 = new int[N], g = new int[N], p = new int[N];
    void add(int a, int b) {
        e[idx] = b;
        ne[idx] = he[a];
        he[a] = idx++;
    }
    public int longestPath(int[] parent, String s) {
        Arrays.fill(he, -1);
        for (int i = 1; i < parent.length; i++) add(parent[i], i);
        cs = s.toCharArray();
        dfs1(0);
        dfs2(0);
        int ans = 1;
        int[] temp = new int[3];
        for (int i = 0; i < parent.length; i++) {
            temp[0] = f1[i]; temp[1] = f2[i]; temp[2] = g[i];
            Arrays.sort(temp);
            ans = Math.max(ans, 1 + temp[1] + temp[2]);
        }
        return ans;
    }
    int dfs1(int u) {
        int ans = 0;
        for (int i = he[u]; i != -1; i = ne[i]) {
            int j = e[i];
            int t = dfs1(j);
            if (cs[u] == cs[j]) continue;
            if (t > f1[u]) {
                f2[u] = f1[u]; f1[u] = t;
                p[u] = j;
            } else if (t > f2[u]) {
                f2[u] = t;
            }
            ans = Math.max(ans, t);
        }
        return ans + 1;
    }
    void dfs2(int u) {
        for (int i = he[u]; i != -1; i = ne[i]) {
            int j = e[i];
            if (cs[u] != cs[j]) {
                // 往上再往上
                g[j] = g[u] + 1;
                // 往上再往下(根据 u 的往下最大路径是否由 j 参与决定使用 最大值 还是 次大值)
                if (p[u] != j) g[j] = Math.max(g[j], 1 + f1[u]);
                else g[j] = Math.max(g[j], 1 + f2[u]);
            }
            dfs2(j);
        }
    }
}
  • 时间复杂度:常数较大的 。相比于一次 DFS 的做法来说,额外多了一次 DFS,以及构建答案时对定长数组的排序操作
  • 空间复杂度:

最后

给大伙通知一下 📢 :

全网最低价 LeetCode 会员目前仍可用!!!

📅 年度会员:有效期加赠两个月!!; 季度会员:有效期加赠两周!!

🧧 年度会员:获 66.66 现金红包!!; 季度会员:获 22.22 现金红包!!

🎁 年度会员:参与当月丰厚专属实物抽奖(中奖率 > 30%)!!

专属链接:https://leetcode.cn/premium/?promoChannel=acoier

更多详情请戳 这里 。

我是宫水三叶,每天都会分享算法知识,并和大家聊聊近期的所见所闻。

欢迎关注,明天见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/792016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSGO比赛赛事大科普,Major并不是一个赛事!

关于CSGO比赛&#xff0c;有很多人都听过许多相关名词&#xff1a;Major、Minor、IEM、EPL、ESL ONE、Dreamhack、ESEA、Blast、EPICENTER等等&#xff0c;但大家有没有想过这些名词所代表的含义呢&#xff1f; Major、Minor严格意义上说&#xff0c;Major、Minor本身并不是赛事…

深入浅出 -- 系统架构之分布式架构

​​​​​​分布式架构&#xff1a; 根据业务功能对系统做拆分&#xff0c;每个业务功能模块作为独立项目开发&#xff0c;称为一个服务。 当垂直应用越来越多时&#xff0c;应用之间的交互不可避免&#xff0c;可将共用的基础服务或核心模块抽取出来作为独立服务&#xff0c…

接口练习题目

练习一 1、声明接口Eatable&#xff0c;包含抽象方法public abstract void eat(); 2、声明实现类中国人Chinese&#xff0c;重写抽象方法&#xff0c;打印用筷子吃饭 3、声明实现类美国人American&#xff0c;重写抽象方法&#xff0c;打印用刀叉吃饭 4、声明实现类印度人Indi…

GDPU 竞赛技能实践 天码行空6

&#x1f4d6; 敌兵布阵 C国的死对头A国这段时间正在进行军事演习&#xff0c;所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段&#xff0c;所以每个工…

使用PostgreSQL中的隐式转换解决,MybatisPlus插入数据库时的类型不一致的问题

使用PostgreSQL中的隐式转换解决,MybatisPlus插入数据库时的类型不一致的问题 问题描述 鄙人在使用 MybatisPlus插件开发一个SpringBoot项目时, 遇到数据库中employee表与Java实体对象中某个属性的类型不一致, 导致插入数据库失败. 具体问题截图如下: 具体原因在于, Java实体…

Java入门教程||Java 多线程编程

Java 多线程编程 Java 给多线程编程提供了内置的支持。一个多线程程序包含两个或多个能并发运行的部分。程序的每一部分都称作一个线程&#xff0c;并且每个线程定义了一个独立的执行路径。 多线程是多任务的一种特别的形式。多线程比多任务需要更小的开销。 这里定义和线程…

usbserial驱动流程解析_Part1_主要函数

本系列解析usbseiral ko的源码&#xff0c;记录主要函数&#xff0c;调用流程&#xff0c;USB一端和串口一端的注册流程&#xff0c;本节简介主要函数以及替换规则。 首先&#xff0c;usbserial是USB转串口驱动的一个基础模板&#xff0c;其中有许多默认函数&#xff0c;他们的…

书生·浦语训练营二期第二次课后作业

文章目录 基础作业使用 InternLM2-Chat-1.8B 模型生成 300 字的小故事 进阶作业熟悉 huggingface 下载功能完成 浦语灵笔2 的 图文创作 及 视觉问答 部署图文创作视觉问答 完成 Lagent 工具调用 数据分析 Demo 部署 作业详细操作步骤见第二次课笔记&#xff1a;https://blog.cs…

CSS层叠样式表学习(字体属性)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS字体属性的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 三、CSS字体属性 CSS Fonts(字体)属性用于定义字体系列、大小&#xff0c;粗细&#xff0c;和文字样式(如斜…

list的常用接口底层实现与介绍

目录 概念&#xff1a; list的基本结构&#xff1a; list的迭代器⭐❤&#xff1a; 自定义类型的完善&#xff1a; const的迭代器&#xff1a; insert erase&#xff1a; size empty push_back 、push_front 、pop_back、pop_front swap 、operator 析构函数…

什么是CSGO游戏搬砖及游戏搬砖注意事项?

CSGO市场是指《反恐精英&#xff1a;全球攻势》游戏内的物品交易市场。玩家可以在这个市场上买卖各类虚拟物品&#xff0c;包括武器皮肤、刀具、手套等。CSGO市场的价格是由供需关系、稀有度、流行度等多个因素影响的。 一般来说&#xff0c;稀有度较高或者比较受欢迎的物品价格…

vscode安装通义灵码

作为vscode的插件&#xff0c;直接使用 通义灵码-灵动指间&#xff0c;快码加编&#xff0c;你的智能编码助手 通义灵码&#xff0c;是一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研…

python--不死兔子问题

def rabbit(n):if n < 3:return 1return rabbit(n - 1) rabbit(n - 3)if __name__ __main__:print(rabbit(4))

1.Docker简介和安装

1 Docker 简介 1.1 Docker 是什么&#xff1f; docker是一个开源的应用容器引擎。 1.2 容器是什么&#xff1f; 容器是一种轻量级的虚拟化技术 &#xff0c;它是一个由应用运行环境、容器基础镜像组成的集合。 以 Web 服务 Nginx 为例&#xff0c;如下图所示&#xff1a;Ngin…

算法 - 符号表-下

&#x1f600;前言 推荐从上看到下 算法 - 符号表-上 &#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 算法 - 符号表查找树1. 插入操作2. 性质 红黑树1. 左旋转2. 右旋转3. 颜色转换4. 插入5. 分析 散列表1. 散列函数2. 拉链法3. 线性探测法3.1 查找3.2 插入3.3 删除3.5 …

外卖配送时间预测项目

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 项目背景 外卖服务的兴起: 随着互联网技术和移动应用的发展&#xff0c;外卖成为一种日益普及的餐饮服务方式。顾客通过餐厅、杂货店的网站或移…

查询SQL server数据库在后台执行过的语句

查询SQL server数据库在后台执行过的语句 SELECT TOP 30000total_worker_time/1000 AS [总消耗CPU 时间(ms)],execution_count [运行次数],qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],last_execution_time AS [最后一次执行时间],min_worker_ti…

LInux脚本学习

1.注释 #单行注释 以 # 字符开头就是单行注释 当然第一行除外&#xff0c;比较特殊 2.多行注释 3.Shell文件的作用 Shell文件就是linux命令集 4.sh脚本的执行方式 bash xxx.sh 5.新建的文件会没有执行权限 #为文件赋予执行权限 chmod ux xxx.sh 6.编写规范 #!/bin/bash #…

2024.4.1 系统移植

TF-A移植 TF-A是基于 Arm 的可信固件 Trusted Firmware-A&#xff0c;简称 TF-A。它是一个开源软件&#xff0c;运行在一个硬件隔离的安全环境中并提供安全服务。 分析README文档 Compilation of TF-A (Trusted Firmware-A): > tf-a目录 1. Pre-requisite > 准备工作 …

paddlepaddle模型转换onnx指导文档

一、检查本机cuda版本 1、右键找到invdia控制面板 2、找到系统信息 3、点开“组件”选项卡&#xff0c; 可以看到cuda版本&#xff0c;我们这里是cuda11.7 cuda驱动版本为516.94 二、安装paddlepaddle环境 1、获取pip安装命令 &#xff0c;我们到paddlepaddle官网&#xff…