七月毁三方
6月中的时候,我们曝光过 著名车企的给应届生发解约通知 的事件。
当时该车企是给出的赔偿方案是 5000。
当时我给出的看法是:应届生选择第一份工作的时候,往往要将其作为职业生涯最重要的跳板来选的,六月份才说要解约,大多数公司的校招窗口都关闭了,学生要面临的是实习空缺问题,公司赔偿 5000 根本毫无诚意。
有没有比这更离谱的?
有,七月毁三方,赔偿 4000。
据该同学在牛客网的爆料:与「苏州恒美电子科技股份有限公司」在 2024-01-03 签订了三方协议后,却在近日收到解约通知,其中文件签署日期是 2024-07-02,赔偿方案是 4000 元。
公司的解约理由也十分敷衍:公司经营战略。
一时间,近期和楼主有类似经历的学生也出来诉苦了:
信心是最宝贵的东西,想要毁掉某些东西,只需要让年轻人失去信心就可以了。
对于刚毕业的应届生,还是那一句,不要过度相信三方协议能给自己带来的保障,我们可能无妨阻挡三方被毁的事实,但暴雨不是一天达成的,一旦察觉到公司有所不妥,马上就做好最坏打算的准备,曾经有过发放过 Offer 但最终选没去的 HR 们,也可以稍微保持联系。
...
回归主题。
来一道和「大疆」相关的算法题。
题目描述
平台:LeetCode
题号:1818
给你两个正整数数组 nums1
和 nums2
,数组的长度都是 n
。
数组 nums1
和 nums2
的绝对差值和定义为所有 |nums1[i] - nums2[i]|(0 <= i < n)
的 总和(下标从 0 开始)。
你可以选用 nums1
中的任意一个元素来替换 nums1
中的至多一个元素,以最小化绝对差值和。
在替换数组 nums1
中最多一个元素之后,返回最小绝对差值和。
因为答案可能很大,所以需要对
|x|
定义为:
- 如果 ,值为
x
,或者 - 如果 ,值为
-x
示例 1:
示例 2:
示例 3:
提示:
二分
这是一道二分陈题,具体做法如下:
我们在进行处理前,先对 nums1
进行拷贝并排序,得到 sorted
数组。
然后 在遍历 nums1
和 nums2
计算总的差值 sum
时,通过对 sorted
进行二分查找,找到最合适替换 的值。
具体的,当我们处理到第 i
位时,假设该位的原差值为 x = abs(nums1[i] - nums2[i])
,然后从 sorted
数组中通过二分找到最接近 的值,计算一个新的差值 nd
(注意要检查分割点与分割点的下一位),如果满足 说明存在一个替换方案使得差值变小,我们使用变量 max
记下来这个替换方案所带来的变化,并不断更新 max
。
当整个数组被处理完,max
存储着最优方案对应的差值变化,此时 sum - max
即是答案。
Java 代码:
C++ 代码:
Python 代码:
TypeScript 代码:
- 时间复杂度:对
sorted
进行拷贝并排序的复杂度为 ;遍历处理数组时会一边统计,一边尝试二分,找最合适的替换数值,复杂度为 。整体复杂度为 - 空间复杂度:使用
sorted
数组需要 的空间复杂度,同时排序过程中会使用 的空间复杂度;整体复杂度为