字节的年终奖要逆天了。。

科技   2024-11-21 15:15   广东  

大家好,我就是那个在B站讲算法的「华南溜达虎」。

最近字节跳动发了一封全员信,要加大对高绩效人才的激励力度,绩效M+及以上的员工在年终奖超出三个月的基础上会获得额外的绩效期权奖励。

有字节的同学表示绩效M+本来就很少,大部分人都是M,所以这个政策跟大部分人没关系。也有人认为字节这样做是想要留住绩效好的人,也能让大家为了更多的奖励变得更卷。还有人认为不是靠卷就能拿M+,还必须得是嫡系中的嫡系。看起来能拿M+的确实是人中龙凤。

25届秋招已经开始了,我组织了一个秋招群,大家可以交流学习心得、面试经验,分享工作机会,有啥问题也可以在群里咨询。在群里我整理了一百多家已经启动秋招企业的文档,以及投递入口,每天都会更新,大家只要按照这个文档海投就可以了

大家互帮互助相信一定可以拿下秋招!计算机相关专业的同学可以 点击底部的「阅读原文」 加群。

归正传,今天我们来分享一道字节的面试原题「移动零」。

题目描述

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

举个例子:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

思路解析

题目要求对数组原地操作,也就是要求空间复杂度位O(1)

我们可以遍历一遍数组统计出非零的个数m,然后再遍历一遍数组把非零的元素依次覆盖数组的前m个位置,最后把剩下的n-m个位置置为0。这样我们需要遍历两遍数组,时间复杂度也是O(1)

下面我再介绍一种只遍历一遍数组的双指针解法,整体的思路类似快速排序。

定义两个指针,left = 0, right = 0

  1. 如果nums[right] == 0,right指针就往右移一步。
  2. 如果nums[right] != 0,就交换nums[left]和nums[right]的值,left和right同时向右移一步。

上述步骤保证了left != right时,left始终指向为零的元素,一旦right指向了非零元素,leftright就交换指向的元素。

c++代码

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int left = 0;
        for (int right = 0; right < nums.size(); ++right) {
            //right指向元素不为0时,跟left交换指向的元素
            //如果left != right,left一定指向为零的元素
            //就算left == right,交换一下元素也没关系
            if (nums[right]) {
                //交换left和right指向的元素
                int temp = nums[right];
                nums[right] = nums[left];
                nums[left] = temp;
                ++left;
            }
        }

    }
};

python代码

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """

        left = 0
        for right in range(len(nums)):
            #right指向元素不为0时,跟left交换指向的元素
            #如果left != right,left一定指向为零的元素
            #就算left == right,交换一下元素也没关系
            if nums[right] != 0:
                #交换left和right指向的元素
                nums[left], nums[right] = nums[right], nums[left]
                left += 1

复杂度分析

时间复杂度: O(n),其中nnums的长度。

空间复杂度: O(1)

号外

经常使用leetcode会员的同学可以使用我的优惠通道啦!

https://leetcode.cn/premium/?promoChannel=ldtiger ,年度会员有效期比官网多俩月,季度会员有效期比官网多两个星期,还有专属福利,需要的读者朋友可以找我了解。

今天的分享就到这里,希望大家能有所收获!

字节被裁来od一周了,感觉很不错。。

毕业没多久,在字节总是被否定。。

原来字节的工牌就是宇宙荣耀。。

面试360,全程被羞辱。。。

刚刚!阿里发出巨额索赔!

编程网事
曾就职于BAT的互联网大厂程序员。个人网站:ldtiger.com
 最新文章