Python技术迷

TMD!离职后还被前公司调查去向。。

离职后还要被前公司调查去向?这年头,连分手都没这么“关心”前任吧?

最近看到一个帖子,说有个程序员离职后,被前公司问东问西,调查去了哪里工作。

Image

网友们的反应很统一:“没有竞业协议、没有补偿,公司凭啥管?”

Image

这让我想起了某些“前任公司”,平时对员工爱答不理,离职后又舍不得放手,恨不得装个GPS追踪你。难道是怕员工出去之后,发现外面的天更蓝、工资更高,忍不住跟前同事分享“自由的空气”?

程序员跳槽,本来就是市场规律。前公司该做的是反思,为什么人走了,而不是去调查人去哪了。毕竟,留得住人才的公司,根本不需要在意员工离职后的去向。

各位程序员朋友,你们遇到过这种“前公司跟踪狂”吗?评论区聊聊,看看谁的前公司最离谱【备注:文末可领最新资料】。

算法题:分配重复整数

有一天,我刷到了一道有意思的算法题,大致意思是这样的:

给定一个整数数组,其中一些数字是重复的,我们需要将这些重复的数字重新分配到数组的空位中(假设数组中有足够的空位来存放所有的数字),确保最终数组中所有的元素都唯一。

乍一看,这题不难,但仔细一想,好像有点东西。简单粗暴的方法当然是用一个 set 记录出现过的数字,然后遍历数组,遇到重复的就找个空位塞进去。但这方法看起来没啥技术含量,而且可能会导致性能问题。

所以,我们得优化一下思路,让它又快又优雅。🐍

解法分析

既然是要去重,我们就得解决两个核心问题:

  1. 如何快速找到重复的元素?
  2. 如何有效地分配这些重复的元素到空位?

我们可以用一个 set 记录已经出现的数字,同时用一个 queue 记录所有的空位索引。然后遍历数组,遇到重复的元素,就把它换到 queue 里的空位,同时确保新填充的数字是唯一的。

代码实现

def allocate_unique_numbers(arr):
    seen = set()  # 记录已出现的数字
    empty_slots = []  # 存放数组中的空位索引
    duplicates = []  # 记录所有重复的数字

    # 第一次遍历:找出所有的重复数字和空位
    for i in range(len(arr)):
        if arr[i] == -1:  # -1 代表空位
            empty_slots.append(i)
        elif arr[i] in seen:
            duplicates.append(i)
        else:
            seen.add(arr[i])

    # 第二次遍历:给重复数字重新分配位置
    num = 1  # 从 1 开始找唯一的数字
    for i in duplicates:
        while num in seen:  # 找一个没出现过的数字
            num += 1
        arr[i] = num  # 替换重复数字
        seen.add(num)  # 记住这个数字
        num += 1  # 下一个数字

    return arr

# 示例测试
arr = [4, 3, -1, 3, 5, -1, 4, -1]
print(allocate_unique_numbers(arr))

代码解析

这段代码巧妙地利用了 set 和 queue,用 set 记录已出现的数字,用 queue 记录空位。这样,我们遍历数组时可以快速判断某个数是否重复,并且能高效地找到替换它的新数。

  • 时间复杂度:O(n) 主要是遍历数组的成本,两次遍历搞定。
  • 空间复杂度:O(n),主要是 seen、empty_slots 和 duplicates 占用的空间。

这样做的好处

  • 不用频繁查找空位:直接存储 empty_slots,分配更高效。
  • 保证新填入的数字唯一:每次找到一个新的 num,确保它不在 seen 里。
  • 避免暴力搜索:没有用 while 在数组里反复查找,时间复杂度稳定。

结语

这道题说难不难,说简单也不简单。刚开始我以为是 set 和 list 组合暴力解,后来发现可以优化,就整了个 queue 来搞定。写完代码后感觉:人活着,能写出一段时间复杂度 O(n) 的去重代码,这才是程序员的浪漫。

最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek

也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。

对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
🔥虎哥私藏精品 热门推荐🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。

资料包含了《IDEA视频教程》、《最全python面试题库》、《最全项目实战源码及视频》及《毕业设计系统源码》,总量高达650GB,全部免费领取