最近华子的“40岁退休论”又火了。说华为不存在40岁危机
原因很简单,40岁就能直接养老了!这话一出,我心里顿时有种复杂的滋味:既羡慕,又觉得有点玄乎🤔。
根据某华子大佬的爆料,外派员工到40岁,大约能攒下375万的股票,每年分红就有75万!直接躺平养老,日子美滋滋。
但仔细一算,100万年薪税后大概也就60万,再扣掉房贷、家庭开销,能剩30万都谢天谢地了。就算你熬到40岁,最多存个300万,哪来的375万股票分红?这是不是对程序员的数学水平有什么误解😂?
不过话说回来,华子确实给员工的福利杠杠的:股票分红、外派补贴、各种奖金……关键还让人有种“拼完这段就解脱了”的安全感。
我只能感慨一句,华子真不愧是卷圈天花板。但话又说回来,这种模式也不是每个人都能承受的。
所以,羡慕归羡慕,我觉得与其纠结40岁能不能退休,不如想想今天的bug能不能清。养老?先让我今晚下班准点回家吧😅。
你们怎么看?
算法题:拼接最大数
[3, 30, 34, 5, 9]
,输出应该是 9534330
。30
和 3
的顺序就不能简单比大小,得考虑拼接后的结果。像这种题,不仅考逻辑,还专治浮躁。😅x
和 y
,我们得看拼接成 xy
和 yx
哪个更大。比如比较 3
和 30
:拼成 330
和303
,明显330
更大,所以3
应该排在30
前面。
Comparator
自定义排序规则。代码如下:import java.util.*;
public class MaxNumber {
public static String largestNumber(int[] nums) {
// 转成字符串数组,方便拼接
String[] strNums = Arrays.stream(nums)
.mapToObj(String::valueOf)
.toArray(String[]::new);
// 自定义排序规则:比较两个字符串拼接后的大小
Arrays.sort(strNums, (a, b) -> (b + a).compareTo(a + b));
// 如果最大值是 0(比如输入全是 0),直接返回 "0"
if (strNums[0].equals("0")) return "0";
// 拼接成最终结果
return String.join("", strNums);
}
public static void main(String[] args) {
int[] nums = {3, 30, 34, 5, 9};
System.out.println(largestNumber(nums)); // 输出: 9534330
}
}
(b + a).compareTo(a + b)
。通过这个规则,数组会按“拼接后更大”的优先级排好序。排序完了直接拼成字符串,一气呵成。👨💻全是零的情况:如果输入是 [0, 0, 0]
,按逻辑拼完结果是"000"
,但正确答案应该是"0"
。所以,得加个判断,处理这种特殊情况。大数问题:虽然 Java 的 String
和BigInteger
足够强大,但拼接的数字可能很大,万一心血来潮用long
来拼,分分钟超范围爆炸。排序稳定性: Arrays.sort
在某些实现上可能不是稳定排序,所以尽量别假设输入的顺序会天然保留。排序逻辑写清楚最保险。
-END-
以上,就是今天的分享了,看完文章记得右下角给何老师点赞,也欢迎在评论区写下你的留言。