程序员老鬼

鹅厂员工在内部圈吐槽:研发中心有好几位组长压根不会写代码,那技术组长的核心竞争力到底是啥?

刚看到鹅厂内部有人吐槽,说有些研发中心的组长根本不会写代码,网友们一片热议:技术组长没技术,那他到底凭啥?

Image

我觉得这事吧,放在程序员角度看,代码能力确实重要,但做到组长以后,核心竞争力就不只是“会不会写”。有网友吐槽说这种人就是混子,其实不全对。组长如果能协调资源、搞定跨部门、帮团队挡需求,哪怕他写不了最优雅的代码,也一样能把项目推进。

从程序员心态讲,我们容易把写代码当成唯一的价值,但职场逻辑有时候更像打游戏:你输出高是DPS,组长更像坦克或者辅助,他的技能点可能在“沟通”“规划”“背锅”。当然,如果光会嘴炮,缺乏最基本的技术判断,那确实挺糟糕。

总的来说,组长的竞争力不是纯技术,而是能不能让团队跑得更稳、更快。技术是地基,但往上走,管理和资源整合才是关键。【备注:文末可领最新资料】

算法题:旋转数组的最小数字

昨天晚上十一点多回家,电梯口等了半天,手里拎着外卖,脑子里还在想一个小问题。就是那个…“旋转数组最小值”。你们肯定见过吧?一个原本升序的数组,被从某个位置掰开接到前面,比如 [1,2,3,4,5] 变成 [3,4,5,1,2],要你找最小那个数。看着简单,手一抖就会写成线性扫描,但总觉得不甘心,对吧。

我在公司楼下抽烟的时候,想了下直觉:如果没有旋转,最小值就是第一个;有旋转的话,最小值落在“断点”处。于是自然而然想到二分。可是…别急,坑在于重复元素。没有重复时,比较 nums[mid] 和 nums[right] 就能判断哪边有序;有重复时,可能相等导致方向不明确,只能把右边界往左缩一下“去重”,不然会卡住。对了,空数组要提前拦截,不然面试官会皱眉。

二分的核心判断就三句:

  1. nums[mid] > nums[right]:最小值在右半边,left = mid + 1。
  2. nums[mid] < nums[right]:最小值在左半边(含 mid),right = mid。
  3. nums[mid] == nums[right]:方向不明,right--,丢掉一个重复尾巴,保证不会错过最小值。

为啥比较的是 right 不是 left?因为右端在被旋转后,往往跨过“断点”,信息量更足;而且用 right 能自然地把“最小值收缩到左侧”这件事表达清楚。时间复杂度平均是 O(log n),但一旦重复特别多,最坏会退化到 O(n),这点别和面试官硬刚,认了就行。

publicclassRotatedArrayMin{
publicstaticintfindMin(int[] nums){
if (nums == null || nums.length == 0) {
thrownew IllegalArgumentException("数组不能为空");
        }
int left = 0, right = nums.length - 1;
while (left < right) {
int mid = left + (right - left) / 2;
if (nums[mid] > nums[right]) {
// 断点在右边
                left = mid + 1;
            } elseif (nums[mid] < nums[right]) {
// 最小值在左边(含mid)
                right = mid;
            } else {
// nums[mid] == nums[right],无法判断,收缩右侧
                right--;
            }
        }
return nums[left];
    }

// 如果题目明确“无重复”,可以用更干脆的版本
publicstaticintfindMinNoDup(int[] nums){
if (nums == null || nums.length == 0) {
thrownew IllegalArgumentException("数组不能为空");
        }
int l = 0, r = nums.length - 1;
while (l < r) {
int m = l + (r - l) / 2;
if (nums[m] > nums[r]) l = m + 1;
else r = m;
        }
return nums[l];
    }
}

有人会问:完全没旋转呢?比如 [1,2,3]。上面代码没问题,比较关系会把 right 慢慢推到最小处,也就是最左边。还有一个边界是全相等 [2,2,2],那就只能靠 right-- 慢慢缩,确实会退化,但结果对。嗯…我现在有点困,不过这个套路你们记住就行:右端作参照,三分支判断,遇到相等就右缩一格。

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

最后给大家分享一份不错的副业资料,点击下方公众号,回复关键字: 副业 领取,也可以链接我领取,微信:hls404