我月薪 5k管仓库,未曾丢过一件东西,公司降本把我裁了。离职后厂子天天打电话问我各种材料放在哪。。。
干了三年仓库,工资没涨过,责任倒是一堆。网友说自己月薪5000管仓库,没丢过一件东西,结果公司一搞降本,先把他优化了。离职之后厂子天天来电话,问材料放哪儿,他一句:“在仓库,您慢慢找。”属实把我笑麻了。
说实话,我特别能共情这哥们儿。干活的时候你是根柱子,一走就变成“存档管理员”了。要不是你走了他们啥都找不到,他们怕不是连仓库门都不记得朝哪开🙄。
很多公司都是这套路:稳定时觉得你可替代,出了事才发现你是“唯一副本”。当工具人时全靠你扛责任,一走他们连螺丝刀都找不着🔧。
所以我觉得吧,有时候你离开一个地方,不是你不行,是他们再也配不上你。你不在的那一刻,混乱才刚刚开始。【备注:文末可领最新资料】
算法题:拼接最大数
局长
最近在刷算法题的时候,遇到了一个挺有意思的题目——拼接最大数。
题目很简单粗暴:给你一堆非负整数,让你把它们拼成一个最大数。要求就是拼接后是最大的,不是说把它们排序后直接拼一起啊,关键点在于“拼接顺序决定大小”这一点。
比如 [3,30,34,5,9],你不能单纯地按数值大小排,最后拼出来得是 "9534330" 才是最大数。你要是按升序排,排完直接拼,那你就“裂开”了。
我一开始接触这题的时候,还在那儿想是不是得用什么动态规划,结果被前同事一句话点醒:“这题比你想的简单,你想象一下两个字符串 a 和 b,你要决定 a + b 大还是 b + a 大。”
哎我当时脑子就清醒了,这不就是比大小谁靠前么?于是有了下面这段代码(别慌,Java党专属,不看错):
import java.util.*;
publicclassSolution {
public String largestNumber(int[] nums) {
String[] strs = newString[nums.length];
for (inti=0; i < nums.length; i++) {
strs[i] = String.valueOf(nums[i]);
}
Arrays.sort(strs, (a, b) -> (b + a).compareTo(a + b));
// 防止出现一堆0,结果变成"0000"
if (strs[0].equals("0")) {
return"0";
}
StringBuildersb=newStringBuilder();
for (String s : strs) {
sb.append(s);
}
return sb.toString();
}
}有一说一,这种题目我真的觉得蛮有意思的,属于你一眼看去不复杂,但要写对又很容易犯错。比如有哥们就喜欢写成这样:
Arrays.sort(strs, (a, b) -> (a + b).compareTo(b + a));一运行发现测试用例怎么都挂,哎哥们,你这个写法是从小到大排序了啊,我们要最大数,应该让大数排前头,所以 (b + a).compareTo(a + b) 才是正解。
当然,你也可以用 Comparator 单独写出来,不要一股脑地在 lambda 里玩花活,看着眼晕😵。
这题最坑的一点是那个 “全是0 的情况”,比如 [0,0,0],你要是直接拼出来是 "000",显然不对,得返回 "0"。这一点很多人写测试用例的时候漏掉,提交就挂。
我觉得做这题,跟我们日常开发也有点像,有时候你不是在比谁的值更大,而是看“谁跟谁组合起来效果最好”。就跟你写代码一样,有些方法放在一起就爆炸,放错地方就灾难。
还碰到一个段子,朋友跟我吐槽:“我前女友就像数组排序一样,一开始以为她能让我变成最大值,结果她选了个新对象,把我移到了后面。”我听完沉默了五秒,然后默默打开了 LeetCode,开始刷题🙃
从程序员角度看,这题还有点能扩展的意思,如果让你把数字拼成最小数,那就把排序方式反过来就行。但“最大数”要求你得对排序规则理解得够透,不然写着写着就会迷路。
顺带提一句,这题其实在排序的稳定性和字符串比较上,也能学到不少东西,比如:
• Java 中字符串比较用 compareTo,返回值正负代表谁大谁小。• 自定义排序可以用 lambda 表达式,写法上要注意别写反。 • 防止出现前缀相同的问题,比如 121和12,谁靠前决定了整体的结构。
有时候我也在想,写算法其实跟做人一样,不能只看表面的大和小,要看怎么组合才最合适。你再牛逼,一个人自转也没法转出银河系,得和对的东西组合,才能最大化。
总结就不整了,毕竟生活也没啥总结,大多时候就是多试试,看哪个组合效果好,像这道题,也是多调调排序函数才有解。你呢,写过这题吗?有没有踩过坑?
最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek
也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。
-END-
以上,就是今天的分享了,看完文章记得右下角点赞,也欢迎在评论区写下你的留言。