面试被打成骨折!因不满面试官的无礼态度,与其争辩了几句,便遭其殴打致腰椎骨折,面试官已被刑拘。。
刚看到个离谱新闻😡:深圳一位刘女士面试时,跟面试官因为态度问题争辩了几句,结果竟被约到厕所围殴,导致腰椎骨折,手机还被抢!面试官现在已被刑拘。
作为程序员,我第一反应是——这代码质量直接报错到“人性漏洞”级别了。面试是双向选择,不合适最多是流程终止,升级到人身伤害,这已经不是职场问题,而是刑事案件。
网友有说“遇到不尊重就怼回去”,但现实里,像我们跑项目遇到烂需求,情绪再炸也得留证据、走流程,因为数据可恢复,骨头可没法回滚。还有人说“面试就该带录音”,我觉得这倒真是个防御机制——就像上线前加监控,能及时抓包异常。
换句话说,尊重是最低配置,安全是最高优先级。无论什么行业,先确保自己人身安全,再谈职业发展,这才是最优解。【备注:文末可领最新资料】
算法题:二叉树最长连续序列
这个题啊,其实我第一次看到是在公司楼下抽烟的时候,有个后端小伙问我的。他说刷LeetCode刷到这道题,卡了一个多小时,心态差点崩了。我当时就笑,说这东西其实没那么玄乎,理解了就是一棵树上找“递增的路径”,只不过路径要连续。
问题大致意思
给你一棵二叉树,每个节点有一个整数值,让你找从父节点到子节点的连续递增序列的最长长度。比如父节点是 3,子节点是 4,再往下是 5,这就算连续的。
注意几个坑点:
连续是指值正好加 1,不是大于就行。 只能从父到子,不能回头走。 不一定从根开始,中间某个节点也可能是最长的起点。
思路分析
我当时跟那个小伙说,你就想象一下,从每个节点往下走,看看能延续多久。如果子节点的值正好是父节点+1,那长度就加一;否则,就从1重新开始计数。
这里用**DFS(深度优先搜索)**是比较自然的,每到一个节点,我们把当前长度传下去,并且在子节点继续判断。如果不连续,就重置长度。
另外一个小技巧:我们不需要额外记录路径,只用记录一个全局的最大值。
代码实现(Java版)
classSolution{
privateint maxLen = 0;
publicintlongestConsecutive(TreeNode root){
if (root == null) return0;
dfs(root, null, 0);
return maxLen;
}
privatevoiddfs(TreeNode node, TreeNode parent, int length){
if (node == null) return;
if (parent != null && node.val == parent.val + 1) {
length++;
} else {
length = 1;
}
maxLen = Math.max(maxLen, length);
dfs(node.left, node, length);
dfs(node.right, node, length);
}
}
// 二叉树节点定义
classTreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
举个例子
比如有这么一棵树:
1
\
2
\
3
跑下来,父子节点都是连续的,长度就是 3。
如果是:
2
/ \
3 2
/
3
最长路径是 2 -> 3,长度为 2,虽然有两个地方出现 2 -> 3,但最长值不变。
时间和空间复杂度
时间复杂度:O(n),每个节点访问一次。 空间复杂度:O(h),h是树的高度(递归栈)。
这道题其实考的不是算法多复杂,而是你对DFS状态传递的熟练程度。很多人一开始会想着把路径存下来,其实没必要,传个长度就行。
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html