被字节恶心到了

news2024/11/25 18:55:56

字节

日常逛 xhs 看到一篇吐槽贴,表示被公司恶心到了:

alt

这位网友表示,最近是公司举办了 Q2 和 H1 的优秀员工表彰,自己的 +1(直属领导)评上了,但仔细一看,+1 获奖的所有产出都是自己的,对此表示十分生气。

重点在于,该网友认为自己的 +1 没有提供过指导帮助(对其他下属也是),自己的产出完全是靠自己闭环,直言不知道这个优秀员工 +1 能不能拿到安心。

这事儿怎么说呢,其实在职场十分常见,也不好评这是不是对的。

有句话不知道大家听过没有:完成本职工作其实就是完成领导的 KPI。

至于"+1 没有提供指导帮助",这个属实不应该,那不是纯纯成了邀功了吗。

对此你怎么看?你有过类似经历吗?你在公司算是"嫡系"吗?欢迎评论区交流。

...

回归主题。

来一道和「唠嗑」高度贴合的算法题。

题目描述

平台:LeetCode

题号:690

给定一个保存员工信息的数据结构,它包含了员工唯一的 id ,重要度和直系下属的 id 。

比如,员工 1 是员工 2 的领导,员工 2 是员工 3 的领导。他们相应的重要度为 15 , 10 , 5 。

那么员工 1 的数据结构是 [1, 15, [2]],员工 2的 数据结构是 [2, 10, [3]],员工 3 的数据结构是 [3, 5, []]

注意虽然员工 3 也是员工 1 的一个下属,但是由于并不是直系下属,因此没有体现在员工 1 的数据结构中。

现在输入一个公司的所有员工信息,以及单个员工 id,返回这个员工和他所有下属的重要度之和。

示例:

输入:[[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1

输出:11

解释:
员工 1 自身的重要度是 5 ,他有两个直系下属 2 和 3 ,而且 2 和 3 的重要度均为 3 。因此员工 1 的总重要度是 5 + 3 + 3 = 11 。

提示:

  • 一个员工最多有一个直系领导,但是可以有多个直系下属
  • 员工数量不超过 2000

递归 / DFS

一个直观的做法是,写一个递归函数来统计某个员工的总和。

统计自身的 importance 值和直系下属的 importance 值。同时如果某个下属还有下属的话,则递归这个过程。

Java 代码:

class Solution {
    Map<Integer, Employee> map = new HashMap<>();
    public int getImportance(List<Employee> employees, int id) {
        int n = employees.size();
        for (int i = 0; i < n; i++) map.put(employees.get(i).id, employees.get(i));
        return getVal(id);
    }
    int getVal(int id) {
        Employee master = map.get(id);
        int ans = master.importance;
        for (int oid : master.subordinates) {
            Employee other = map.get(oid);
            ans += other.importance;
            for (int sub : other.subordinates) ans += getVal(sub);
        }
        return ans;
    }
}

C++ 代码:

class Solution {
public:
    unordered_map<int, Employee*> map;
    int getImportance(vector<Employee*>& employees, int id) {
        for (auto employee : employees) map[employee->id] = employee;
        return getVal(id);
    }
    int getVal(int id) {
        Employee* master = map[id];
        int ans = master->importance;
        for (int oid : master->subordinates) {
            Employee* other = map[oid];
            ans += other->importance;
            for (int sub : other->subordinates) ans += getVal(sub);
        }
        return ans;
    }
};

Python 代码:

class Solution:
    def __init__(self):
        self.mapping = {}

    def getImportance(self, employees, id):
        for emp in employees:
            self.mapping[emp.id] = emp
        return self.getVal(id)

    def getVal(self, id):
        master = self.mapping[id]
        ans = master.importance
        for oid in master.subordinates:
            other = self.mapping[oid]
            ans += other.importance
            for sub in other.subordinates:
                ans += self.getVal(sub)
        return ans

TypeScript 代码:

map: Map<number, Employee>;
function getImportance(employees: Employee[], id: number): number {
    this.map = new Map();
    employees.forEach(emp => this.map.set(emp.id, emp));
    return getVal(id);
};
function getVal(id: number): number {
    const master = this.map.get(id);
    let ans = master.importance;
    for (const oid of master.subordinates) {
        const other = this.map.get(oid);
        ans += other.importance;
        for (const sub of other.subordinates) ans += getVal(sub);
    }
    return ans;
}
  • 时间复杂度:
  • 空间复杂度:

迭代 / BFS

另外一个做法是使用「队列」来存储所有将要计算的 Employee 对象,每次弹出时进行统计,并将其「下属」添加到队列尾部。

class Solution {
    public int getImportance(List<Employee> employees, int id) {
        int n = employees.size(), ans = 0;
        Map<Integer, Employee> map = new HashMap<>();
        for (int i = 0; i < n; i++) map.put(employees.get(i).id, employees.get(i));
        Deque<Employee> d = new ArrayDeque<>();
        d.addLast(map.get(id));
        while (!d.isEmpty()) {
            Employee poll = d.pollFirst();
            ans += poll.importance;
            for (int oid : poll.subordinates) d.addLast(map.get(oid));
        }
        return ans;
    }
}

C++ 代码:

class Solution {
public:
    int getImportance(vector<Employee*> employees, int id) {
        int n = employees.size(), ans = 0;
        unordered_map<int, Employee*> map;
        for (int i = 0; i < n; i++) map[employees[i]->id] = employees[i];
        deque<Employee*> d;
        d.push_back(map[id]);
        while (!d.empty()) {
            Employee* poll = d.front();
            d.pop_front();
            ans += poll->importance;
            for (int oid : poll->subordinates) d.push_back(map[oid]);
        }
        return ans;
    }
};

Python 代码:

class Solution:
    def getImportance(self, employees: List['Employee'], id: int) -> int:
        n, ans = len(employees), 0
        mapping = {emp.id: emp for emp in employees}        
        d = []
        d.append(mapping[id])
        while d:
            poll = d.pop(0)
            ans += poll.importance
            for oid in poll.subordinates:
                d.append(mapping[oid])
        return ans

TypeScript 代码:

function getImportance(employees: Employee[], id: number): number {
    const map = new Map(employees.map(emp => [emp.id, emp]));
    let ans = 0;
    const d: Employee[] = [];
    d.push(map.get(id));
    while (d.length) {
        const poll = d.shift();
        ans += poll.importance;
        for (const oid of poll.subordinates) d.push(map.get(oid));
    }
    return ans;
};
  • 时间复杂度:
  • 空间复杂度:

最后

巨划算的 LeetCode 会员优惠通道目前仍可用 ~

使用福利优惠通道 leetcode.cn/premium/?promoChannel=acoier,年度会员 有效期额外增加两个月,季度会员 有效期额外增加两周,更有超大额专属 🧧 和实物 🎁 福利每月发放。

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

欢迎关注,明天见。

更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 🎉🎉

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

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

相关文章

sql注入第7关(学习记录)

看到这里好像和前面的不一样了&#xff0c;多了个use outfile 先输入个符号&#xff0c;看报错&#xff0c;还是得看别人的教程&#xff0c;通过查找&#xff0c;好像要通过图片来进行注入&#xff0c;ok呀&#xff0c;又是新的方式&#xff0c; 首先我们需要知道他的闭合方式…

uniapp+Android智慧居家养老服务平台 0fjae微信小程序

目录 项目介绍支持以下技术栈&#xff1a;具体实现截图HBuilderXuniappmysql数据库与主流编程语言java类核心代码部分展示登录的业务流程的顺序是&#xff1a;数据库设计性能分析操作可行性技术可行性系统安全性数据完整性软件测试详细视频演示源码获取方式 项目介绍 老年人 登…

算法 | 鹈鹕算法POA-Transformer-LSTM多变量回归预测

&#x1f525; 内容介绍 近年来&#xff0c;随着大数据时代的到来和计算能力的飞速提升&#xff0c;对复杂系统进行精确预测的需求日益增长。多变量时间序列预测作为一项关键技术&#xff0c;广泛应用于金融、能源、交通等诸多领域。传统的预测方法&#xff0c;例如ARIMA和多元…

Prometheus Metrics和PromQL的使用

Metrics 官方解释是 Metrics are numerical measurements in layperson terms. (通俗地讲&#xff0c;Metrics就是数字测量) Prometheus fundamentally stores all data as time series &#xff08;Prometheus把所有数据都存储为时间序列&#xff09; Every time series is u…

《PMI-PBA认证与商业分析实战精析》第6章 跟踪与监督

第6章 跟踪与监督 本章主要内容包括&#xff1a; 跟踪 关系与依赖性 批准需求 基线化已批准需求 使用跟踪矩阵来监督需求 需求生命周期 管理需求变更 本章涵盖的考试重点&#xff1a; 跟踪与监督的六项活动 跟踪与监督六项活动的可交付成果及活动间的关系 跟踪的定义…

指南:Linux常用的操作命令!!!

引言: 操作系统是软件的一类。 主要作用是协助用户调度硬件工作&#xff0c;充当用户和计算机硬件之间的桥梁。 尽管图形化是大多数人使用计算机的第一选择&#xff0c;但是在Linux操作系统上多数都是使用的&#xff1a;命令行在开发中&#xff0c;使用命令行形式&#xff0c…

【有啥问啥】联邦学习(Federated Learning, FL):保护隐私的分布式机器学习

联邦学习&#xff08;Federated Learning, FL&#xff09;&#xff1a;保护隐私的分布式机器学习 联邦学习&#xff08;Federated Learning, FL&#xff09;作为一种前沿的分布式机器学习技术&#xff0c;正逐步成为解决数据隐私保护与模型性能提升之间矛盾的关键方案。以下是…

HTTP Cookie与Session

目录 一. 引入Cookie 1.1 定义 1.2 工作原理 1.3 分类 二. 认识Cookie 三. 测试Cookie 五. 引入Session 六. 测试Session 这篇博客&#xff0c;我们来看看Cookie与Session&#xff0c;内容干货满满。 一. 引入Cookie 1.1 定义 HTTP Cookie&…

幂等性及技术解决方案

目录 定义幂等性 为什么需要幂等性幂等性设计注意事项幂等性的范围分布式锁解决幂等性 设计 延伸阅读 定义幂等性 简单地说&#xff0c;我们可以多次执行幂等运算而不改变结果或者使用相同的输入参数中被调用多次&#xff0c;则不具有额外效果的操作&#xff0c;也就是多次执…

使用pytdx获取历史股票行情

使用pytdx获取历史股票行情 先看效果pytdx基础获取历史股票行情将历史数据存入数据库 先看效果 获取从2010年01月01日-2024年09月30日的股票数据 pytdx基础 https://blog.csdn.net/firexiaHouse/article/details/142687052?spm1001.2014.3001.5501 获取历史股票行情 def …

C++11--智能指针

引入 为什么需要智能指针&#xff1f; 在介绍异常时&#xff0c;遇到以下场景&#xff0c;处理异常就会比较棘手&#xff1a; void Func() {int* arr1 new int[10];int* arr2 new int[20];int* arr3 new int[30];// ...delete[] arr1;delete[] arr2;delete[] arr3; }这里…

一文吃透 SpringBoot (从入门到精通)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

15分钟学 Python 第35天 :Python 爬虫入门(一)

Day 35 : Python 爬虫简介 1.1 什么是爬虫&#xff1f; 网页爬虫&#xff08;Web Crawler&#xff09;是自动访问互联网并提取所需信息的程序。爬虫的主要功能是模拟用户通过浏览器访问网页的操作&#xff0c;从而实现对网页内容的批量访问与信息提取。它们广泛应用于数据收集…

【IPv6】IPv6地址格式及地址分类(组播、单播、任播)整理

IPv6地址格式 IPv6 地址从 IPv4 地址的 32 bits 扩展到 128 bits&#xff0c;IPv6 地址的表示、书写方式也从 IPv4 的点分十进制&#xff0c;修改16进制的冒号分割 IPv4 点分格式(.) 192.168.11.11 IPv6 冒号分割(:) 2408:8459:3032:0000:0000:0000:0001:a9fd IPv6 的规范…

平面电磁波的电场能量磁场能量密度相等,注意电场能量公式也没有复数形式(和坡印廷类似)

1、电场能量密度和磁场能量密度相等(实数场算的) 下面是电场能量密度和磁场能量密度的公式&#xff0c;注意这可不是坡印廷定理。且电场能量密度没有复数表达式&#xff0c;即不是把E和D换成复数形式就行的。注意&#xff0c;一个矢量可以转化为复数形式&#xff0c;两个矢量做…

6.4 数据处理架构模式和实践

6.4 数据处理架构模式和实践 目录概述需求&#xff1a; 设计思路实现思路分析1.批处理架构2.实时处理架构3.流处理架构4.微服务架构&#xff08;重点&#xff09;5.数据湖架构6.数据仓库架构 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , s…

Java | Leetcode Java题解之第452题用最少数量的箭引爆气球

题目&#xff1a; 题解&#xff1a; class Solution {public int findMinArrowShots(int[][] points) {if (points.length 0) {return 0;}Arrays.sort(points, new Comparator<int[]>() {public int compare(int[] point1, int[] point2) {if (point1[1] > point2[1…

微软官网列出了 Windows 11 LTSC 2024 中的全部新功能

今天早些时候&#xff0c;微软发布了有关受托管PC的Windows 11 24H2 升级和兼容性的详细信息。 该帖子针对的是负责在各自办公室和组织中处理系统的 IT 系统管理员。与此同时&#xff0c;微软也发布了有关 Windows 11 LTSC 或长期服务渠道的信息。 该公司已于四月早些时候证实…

yolov10+strongsort的目标跟踪实现

此次yolov10deepsort不论是准确率还是稳定性&#xff0c;再次超越了之前的yolodeepsort系列。 yolov10介绍——实时端到端物体检测 YOLOv10 是清华大学研究人员在 UltralyticsPython 清华大学的研究人员在 YOLOv10软件包的基础上&#xff0c;引入了一种新的实时目标检测…

Java 异常一口气讲完!(_ _)。゜zzZ

Java 异常处理 Java面向对象设计 - Java异常处理 异常是在没有定义正常执行路径时在Java程序的执行期间可能出现的条件。 Java通过将执行操作的代码与处理错误的代码分离来处理错误。 当发生异常时&#xff0c;Java会创建一个包含有关异常的所有信息的对象&#xff0c;并将其…