罗马人犯错,牛马人背锅

实习生事件

过去几天,简中网最精彩的瓜,是华中科技大学的大一新生,在中信建投投行部(国内规模前三的头部券商的核心部门)实习,拍摄短视频 vlog 的破圈事件。

虽只是大一,虽只是实习,但这位同学的 vlog 详细地给我们展示了属于金融精英们的精致。

视频里,该男生西装革履,戴着劳力士,开着保时捷,十点钟慢慢悠悠地到达国贸写字楼上班,泡了一杯咖啡,弄了几个角度的自拍,顺便泄露了公司几个机密项目。这班上到下午两三点,结束工作,开车去球场练习一下高尔夫,然后晚上再打两场羽毛球,最后再开着跑车美美地回家。

这事儿怎么说呢。虽然该男生拍视频主要目的,是分享精英阶层的精致的一天,但破圈的热词和网民的讨论重点,是其对于 IPO 资料的泄露。

alt

可能会有读者有疑问,这届网友怎么变理智了?居然没重点吐槽炫富,而是关心资料泄露?

前有 xhs 晒 93 年中金老公,月薪 80k,直接导致史上最强限薪令、收入递延和退薪政策的出台,这次的大一实习生高调贴脸炫富,居然没掀起波澜?

其实道理很简单,大一就能进入头部券商的核心部门实习,能戴劳力士开保时捷,必然是身世显赫的富二代,他所能度过的这精致的一天,是他的家庭给予他的,不是金融行业或者这个投行实习生的身份所给予他的。

网友抵制炫富不假,但能够引发热烈讨论,能够让大多数人都共情感到不适的,往往是那种行业不同导致的差异,因为这种差异更容易显得"不公平"。

比如大家都是同校毕业生,金融和计算机实习都过万,某些专业则只有 3500;再比如大家都是行业中的底层人员,你却拿着我这个行业的收入天花板,这时候如果优势方跑出来炫富,那指定是要被喷惨的。

但视频男主的炫富,本质是对家庭地位资源的炫耀,对于这种从"羊水阶段"就存在的差异,社会接受度普遍较高。

既然身世显赫,这投行实习生这一身份自然称不上是"饭碗",这一实习经历充其量只是作为少爷将来简历中的一项。

少爷犯错了,辞去实习生身份,暑假接着放,留下来的还指望着工作养家糊口的涉事员工就惨了。

"人是谁招进来的?"

"实习生入职谁负责培训的,为什么会发生这种事?"

"直属上司是谁,怎么带的新人?"

"工作任务是谁分配的,为什么这么敏感的资料会交给新人?"

"同一办公室的都有谁,为什么一个新人这么高调在拍视频,没人向上反映?"

想要找人负责,有太多的理由,而且付出最多的,往往是最底层的员工。

这可谓 罗马人犯错,牛马人背锅。

...

回归主题。

来一道和「腾讯」相关的题目。

题目描述

平台:LeetCode

题号:1038

给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。

提醒一下,二叉搜索树满足下列约束条件:

  • 节点的左子树仅包含键小于节点键的节点。
  • 节点的右子树仅包含键大于节点键的节点。
  • 左右子树也必须是二叉搜索树。

示例 1:

alt
输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]

输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]

示例 2:

输入:root = [0,null,1]

输出:[1,null,1]

提示:

  • 树中的节点数在 范围内。
  • 树中的所有值均不重复。

中序遍历

利用 BST 的中序遍历是有序」 的特性,我们可以通过两次遍历 BST 来求解问题。

首先,通过一次遍历,计算出整棵树的节点总和 tot,然后在中序遍历过程中,不断对 tot 进行更新,将其作为当前未遍历到的节点的总和,用于给当前节点赋值。

假设当前遍历到的节点为 x(起始节点值为 t),那么将节点更新为当前节点 tot 后,更新 tot = tot - t

这是常规的中序遍历做法,更进一步,如果将其中序遍历的顺序进行翻转(从「左中右」调整为「右中左」),则可实现一次遍历。

Java 代码:

class Solution {
    int tot = 0;
    public TreeNode bstToGst(TreeNode root) {
        dfs(root);
        return root;
    }
    void dfs(TreeNode root) {
        if (root == nullreturn ;
        dfs(root.right);
        tot += root.val;
        root.val = tot;
        dfs(root.left);
    }
}

C++ 代码:

class Solution {
public:
    int tot = 0;
    TreeNode* bstToGst(TreeNode* root) {
        dfs(root);
        return root;
    }
    void dfs(TreeNode* root) {
        if (root == nullptrreturn;
        dfs(root->right);
        tot += root->val;
        root->val = tot;
        dfs(root->left);
    }
};

Python 代码:

class Solution:
    def bstToGst(self, root: TreeNode) -> TreeNode:
        tot = 0
        def dfs(root):
            nonlocal tot
            if not root: return
            dfs(root.right)
            tot += root.val
            root.val = tot
            dfs(root.left)
        dfs(root)
        return root

TypeScript 代码:

function bstToGst(root: TreeNode | null): TreeNode | null {
    let tot = 0;
    const dfs = function(root: TreeNode | null): void {
        if (!root) return ;
        dfs(root.right);
        tot += root.val;
        root.val = tot;
        dfs(root.left);
    }
    dfs(root);
    return root;
};
  • 时间复杂度:
  • 空间复杂度:

最后

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

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

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

欢迎关注,明天见。

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值