也是让我碰见吃人血的公司了
刚刷到个帖子,说有网友去问某公司能不能面试,结果HR直接劝退,说公司拖欠工资、来了就让你干销售,还不给钱,甚至还有“被贷款”的风险,项目赔了得你自己兜底……也是够离谱的😅。
我觉得这事吧,放在程序员的角度,更是脑袋嗡嗡的。咱写代码还怕遇上加班,结果这家公司直接开外挂,薪资全靠运气,职业风险全包给员工,这种“吃人血馒头”的玩法,也太不讲武德了。
网友们都在骂HR“良心发现”,其实这种公司HR说实话,反倒是给大家省了不少试错成本,算是极少数正能量了。
遇到这种“明摆着不靠谱”的地方,早点跑路保平安,毕竟技术是用来搞事业,不是来填坑的。共勉,各位打工人多点信息差,少踩坑!【备注:文末可领最新资料】
算法题:分享巧克力
说实话,这题其实套路不算新,意思就是:有N个小朋友,给你一堆巧克力,每块的大小不一样,每个孩子只能分到一块,要求分得的巧克力越大越好,而且大家要尽量公平。最经典的考法,就是“求能分给每个人的最大最小值”。你看着是不是有点绕?其实就是让每个孩子能分到的最小块尽量大。比方说,你家有仨孩子,一堆巧克力块是[7,5,9],你说怎么分?最大最小能有多少?答案其实是7,因为一人一块最大能保证的,最小块也有7。
有点意思吧,等会儿,我喝口水哈,刚才吃辣条有点噎着了。说回来,这种题说到底,思路就是二分法+贪心。Java里头写起来其实也就那点事儿。思路很简单:你先猜一个“最小能分到的巧克力块大小”,然后用贪心方法试着分,如果能分够N个人,就往大里猜;分不过来,就往小里试。二分答案,直到收敛。
代码就那几行,我那天在群里给小李发了个简化版,直接贴上来,大家感受下,别嫌口水话多哈:
publicclassChocolateShare{
publicstaticvoidmain(String[] args){
// 假设巧克力块大小和人数
int[] chocolates = {7, 5, 9};
int kids = 3;
System.out.println(maxMinShare(chocolates, kids));
}
publicstaticintmaxMinShare(int[] chocolates, int k){
int left = 1, right = getMax(chocolates);
int ans = 0;
while (left <= right) {
int mid = left + (right - left) / 2;
if (canShare(chocolates, k, mid)) {
ans = mid;
left = mid + 1; // 能分就往大试
} else {
right = mid - 1; // 不行就往小试
}
}
return ans;
}
privatestaticbooleancanShare(int[] chocolates, int k, int minSize){
int count = 0;
for (int choco : chocolates) {
count += choco / minSize; // 一块能切几份
}
return count >= k; // 能不能分够人头
}
privatestaticintgetMax(int[] arr){
int max = arr[0];
for (int a : arr) if (a > max) max = a;
return max;
}
}
其实你看明白了,这题思路真的一点不花哨,核心还是用二分试答案,每次验证一下够不够人头,每次贪心切就完事。现实里,像我这种平时抢红包都不怎么手快的人,做这种算法题也是被逼出来的……每次看到“最大化最小值”,就条件反射用二分。
哦对,生活中也有类似场景啊,周末带娃去亲子班,老师发饼干,也是先保证每个人能分一块,剩下再说,分法跟这算法简直一毛一样。
要说技巧嘛,其实不难,就是思路别死背——什么分块题、分金条题、分绳子题,万变不离其宗,都能这么搞。要不然群里老王总说什么“算法=生活智慧”,其实也不是瞎扯。
-END-
我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html