为什么有些领导一上来就喜欢裁员,把团队里的全部老人都裁掉,再去外面招新人,想啥呢?
刚刷到个贴子,说有些领导一上任就大刀阔斧,先裁员、特别是把老员工都清走,再从外面招一批新人。网友们都在骂,说这种领导心太狠。
我觉得吧,这事不能一概而论。有的确实是为了立威、刷存在感,生怕别人说自己没动作;但也有的,是为了换掉那些在老体制里混日子、阳奉阴违的人。
说白了,老员工不是不能留,而是你得能跟得上新节奏,否则对团队就是拖累。
网友有人说这种领导没情分,我倒觉得,在公司里,感情排第二,效率第一。能带团队跑起来的,才是好领导。
不过话说回来,真有能力的领导,不靠裁员来证明自己,而是能让新人服气、老人焕新。
带人是本事,裁人只是手段。【备注:文末可领最新资料】
算法题:合法分组的最少组数
昨晚十一点多,楼下便利店门口那小板凳一坐…脑子里还在想那个题,合法分组的最少组数。就是那个…数组里有一堆数,要把它们分成若干组,但每一组里,同一个数不能重复。问最少需要几组。你们一听是不是就有感觉了:同一个数出现了 m 次,你再怎么塞,同一组只能放一个,所以至少要 m 组,对吧。那全局最少组数…不就等于所有数的最高出现次数嘛。说白了谁最“挤”,就用它来定组的下限。
小标题先来一个:题意和直觉 我昨天跟我们组小李说:别绕。合法=“组内无重复元素”。那最少组数的瓶颈只看频次最大值 maxFreq。因为别的数都能往这 maxFreq 个组里“轮流发”,像发扑克牌一样一摞一摞发过去,永远不会在同一组撞车。
再来一点实现的碎碎念 数一遍频次,取最大值,这就是答案。要真想把分好的组也构造出来,也行:把每个值按出现次数拆成若干张“牌”,然后第 0 次出现放到第 0 组,第 1 次出现放到第 1 组…循环分配。代码里我顺手也给了个构造版,免得大家面试被问“只会算不会分”。
代码来了,java,就很朴素那种:
import java.util.*;
publicclassMinGroupsNoDupInGroup{
// 只求最少组数
publicstaticintminGroups(int[] nums){
Map<Integer, Integer> freq = new HashMap<>();
for (int x : nums) freq.put(x, freq.getOrDefault(x, 0) + 1);
int max = 0;
for (int c : freq.values()) max = Math.max(max, c);
return max;
}
// 可选:真实构造每一组(验证/展示用)
publicstatic List<List<Integer>> buildGroups(int[] nums) {
// 统计并按值把下标/元素分桶
Map<Integer, Integer> freq = new HashMap<>();
for (int x : nums) freq.put(x, freq.getOrDefault(x, 0) + 1);
int groups = 0;
for (int c : freq.values()) groups = Math.max(groups, c);
List<List<Integer>> res = new ArrayList<>();
for (int i = 0; i < groups; i++) res.add(new ArrayList<>());
// 为了更均匀,按值遍历,把同一个值的多次出现轮流丢到 0..groups-1
Map<Integer, Integer> used = new HashMap<>(); // 记录某值已放了几次
for (int x : nums) {
int k = used.getOrDefault(x, 0);
res.get(k).add(x);
used.put(x, k + 1);
}
return res;
}
// 小测一下
publicstaticvoidmain(String[] args){
int[] nums = {1,1,2,2,2,3,3,4};
System.out.println(minGroups(nums)); // 3,因为2出现3次
List<List<Integer>> g = buildGroups(nums);
for (List<Integer> row : g) System.out.println(row);
}
}
等等我刚接了个电话…好,继续两句技术点 时间复杂度 O(n),空间 O(n)。边界像空数组返回 0,只有一个元素返回 1,都符合直觉。注意哈,题目的“合法”前提是“同一组内同值不能重复”,如果你们遇到那种变体(比如每组还要有固定长度、或要求连续、或要求相邻差不超过 k),结论就不一样了,别硬套这个 maxFreq。
行,我不啰嗦了,结论一句话:最少组数 = 数组中某个元素的最高出现次数。我先去泡杯茶,眼睛有点花…
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html