支付宝研发岗的年终奖。。

支付宝年终奖

这两天,脉脉上陆续有支付宝小伙伴爆料年终奖。

绝大多数爆料都是从脉脉官方渠道进行收集(打开特殊入口,填写表格),因此可信度较高,都带具体金额:

但可惜的是,脉脉统计年终奖爆料的时候,没有统计绩效系数是多少。

众所周知,阿里系的公司,采用的是双序列职业发展体系:

  • M 序列代表管理路线,从 M1 到 M10
  • P 序列代表技术路线,从 P4 到 P14

除了定级,另外一个和年终奖挂勾的是绩效系数,采取的是五分制:

  • 2.5 及以下:不可接受
  • 3:需要改进
  • 3.25:需要提高
  • 3.5:符合期望
  • 3.75:部分超出期望
  • 4:超出期望
  • 4.5:一贯持续超出期望
  • 5:卓越

常规分布基本是 2.53.25 占 10%,3.5 占 60%,3.755 占 30%,即 361 分布。

实际上基本都围绕着 3.25、3.5 和 3.75 这三档进行。

如果取得 3.75 系数的话,不仅会获得超额年终,还会有幅度较大的薪资涨幅。

例如这位网友:

定级 14,绩效 3.75,拿到年终奖 22W(不算 13 薪),薪资涨幅 14%,涨完后 base 来到了 57k。

这几年大家可没少吐槽支付宝,尤其是在越来越多人选择微信支付的今天。

但吐槽归吐槽,支付宝仍然是国内超一线互联网大厂,同时也是头巨大的现金奶牛。

...

回归主线。

来一道和「支付宝」相关的算法题。

题目描述

平台:LeetCode

题号:915

给定一个数组 nums,将其划分为两个连续子数组 leftright,使得:

  • left 中的每个元素都小于或等于 right 中的每个元素。
  • leftright 都是非空的。
  • left 的长度要尽可能小。

在完成这样的分组后返回 left 的长度。

用例可以保证存在这样的划分方法。

示例 1:

css 复制代码
输入:nums = [5,0,3,8,6]

输出:3

解释:left = [5,0,3],right = [8,6]

示例 2:

css 复制代码
输入:nums = [1,1,1,0,6,12]

输出:4

解释:left = [1,1,1,0],right = [6,12]

提示:

  • <math xmlns="http://www.w3.org/1998/Math/MathML"> 2 < = n u m s . l e n g t h < = 1 0 5 2 <= nums.length <= 10^5 </math>2<=nums.length<=105
  • <math xmlns="http://www.w3.org/1998/Math/MathML"> 0 < = n u m s [ i ] < = 1 0 6 0 <= nums[i] <= 10^6 </math>0<=nums[i]<=106
  • 可以保证至少有一种方法能够按题目所描述的那样对 nums 进行划分。

模拟

根据题意,我们知道本质是求分割点,使得分割点的「左边的子数组的最大值」小于等于「右边的子数组的最小值」。

我们可以先通过一次遍历(从后往前)统计出所有后缀的最小值 min,其中 min[i] = x 含义为下标范围在 <math xmlns="http://www.w3.org/1998/Math/MathML"> [ i , n − 1 ] [i, n - 1] </math>[i,n−1] 的 <math xmlns="http://www.w3.org/1998/Math/MathML"> n u m s [ i ] nums[i] </math>nums[i] 的最小值为 x,然后再通过第二次遍历(从前往后)统计每个前缀的最大值(使用单变量进行维护),找到第一个符合条件的分割点即是答案。

Java 代码:

Java 复制代码
class Solution {
    public int partitionDisjoint(int[] nums) {
        int n = nums.length;
        int[] min = new int[n + 10];
        min[n - 1] = nums[n - 1];
        for (int i = n - 2; i >= 0; i--) min[i] = Math.min(min[i + 1], nums[i]);
        for (int i = 0, max = 0; i < n - 1; i++) {
            max = Math.max(max, nums[i]);
            if (max <= min[i + 1]) return i + 1;
        }
        return -1; // never
    }
}

C++ 代码:

C++ 复制代码
class Solution {
public:
    int partitionDisjoint(vector<int>& nums) {
        int n = nums.size();
        vector<int> arr(n + 10);
        arr[n - 1] = nums[n - 1];
        for (int i = n - 2; i >= 0; i--) arr[i] = min(arr[i + 1], nums[i]);
        int maxv = 0;
        for (int i = 0; i < n - 1; i++) {
            maxv = max(maxv, nums[i]);
            if (maxv <= arr[i + 1]) return i + 1;
        }
        return -1; // never
    }
};

Python 代码:

Python 复制代码
class Solution:
    def partitionDisjoint(self, nums: List[int]) -> int:
        n = len(nums)
        minv = [0] * (n + 10)
        minv[n - 1] = nums[n - 1]
        for i in range(n - 2, -1, -1):
            minv[i] = min(minv[i + 1], nums[i])
        maxv = 0
        for i in range(n - 1):
            maxv = max(maxv, nums[i])
            if maxv <= minv[i + 1]:
                return i + 1
        return -1

TypeScript 代码:

TypeScript 复制代码
function partitionDisjoint(nums: number[]): number {
    const n = nums.length
    const min = new Array<number>(n + 10).fill(nums[n - 1])
    for (let i = n - 2; i >= 0; i--) min[i] = Math.min(min[i + 1], nums[i])
    for (let i = 0, max = 0; i < n; i++) {
        max = Math.max(max, nums[i])
        if (max <= min[i + 1]) return i + 1
    }
    return -1
}
  • 时间复杂度: <math xmlns="http://www.w3.org/1998/Math/MathML"> O ( n ) O(n) </math>O(n)
  • 空间复杂度: <math xmlns="http://www.w3.org/1998/Math/MathML"> O ( n ) O(n) </math>O(n)

最后

给大伙通知一下 📢 :

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

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

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

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

专属链接:leetcode.cn/premium/?pr...

更多详情请戳 这里

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

欢迎关注,明天见。

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

相关推荐
想用offer打牌2 小时前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp
崔庆才丨静觅2 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60613 小时前
完成前端时间处理的另一块版图
前端·github·web components
KYGALYX3 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了3 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅3 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅4 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
爬山算法4 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
崔庆才丨静觅4 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment4 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端