大家好呀,我是飞鱼。
随着GPT的爆火,大模型方向近期也迎来越来越多的机会和发展。
❝而且作为工作几年CRUD的后端,感觉后端开发是越来越卷了。
这里也不是鼓励大家赶紧去转大模型,可以先了解一下新的行业,新的机会,更好的规划自己未来的职业发展。
❝现在招聘大模型的岗位还是比较少的,而且也出现很多培训大模型的(大部分是收割韭菜的,大家也别被骗了)。
目前大模型工程师有以下几个方向
❝大模型数据工程师:
- 数据清洗/ETL/Data Engine/Pipeline
大模型平台工程师:
- 分布式训练/大模型集群/工程基建
大模型算法工程师:
- 搜广推/对话机器人/AIGC等
大模型部署工程师:
- 推理加速/跨平台/端智能/嵌入式等
就目前的现状,对于数据工程师,特别是有经验的数据工程师,是非常稀缺的。
❝多关心数据,积累高质量训练/测试集的构建经验,对数据的Sense,是最直接,也是最适合用到未来工作当中的。
想做应用的,建议深耕某个垂直领域。
❝比如对话机器人,问答系统,金融/医疗/教育方向,找一个具体的场景,把它做好,做深。
每日一题
题目描述
❝给定一个二叉树,判断它是否是 平衡二叉树。
解题思路
❝递归
三点注意事项:
- 左子树是平衡二叉树
- 右子树是平衡二叉树
- 左右子树高度不超过1
代码实现
Java代码:
class Solution {
public boolean isBalanced(TreeNode root) {
//只要不存在不平衡的子树,则整个树平衡
return depth(root) != -1;
}
//递归求解每个子二叉树的平衡性,一旦有不平衡的,递归向上返回-1,结束判断
public int depth(TreeNode root) {
if (root == null) {
return 0;
}
//计算左节点的深度
int left = depth(root.left);
//计算右节点深度
int right = depth(root.right);
//如果本层根节点的二叉树不平衡则返回-1,如果其子树不平衡一样
if (Math.abs(left - right) > 1 || left == -1 || right == -1) {
return -1;
}
return Math.max(left, right) + 1;
}
}
Python代码:
class Solution:
def isBalanced(self, root):
# 只要不存在不平衡的子树,则整个树平衡,调用depth方法判断,若返回值不是 -1 则表示平衡
return self.depth(root)!= -1
def depth(self, root):
if root is None:
return 0
# 计算左子树深度
left = self.depth(root.left)
# 计算右子树深度
right = self.depth(root.right)
# 如果本层根节点的二叉树不平衡(左右子树高度差绝对值大于1)或者左、右子树有返回 -1 的情况(即不平衡),则返回 -1
if abs(left - right) > 1 or left == -1 or right == -1:
return -1
return max(left, right) + 1
Go代码:
func (s *Solution) IsBalanced(root *TreeNode) bool {
return s.Depth(root)!= -1
}
func (s *Solution) Depth(root *TreeNode) int {
if root == nil {
return 0
}
// 递归计算左子树深度
left := s.Depth(root.Left)
// 递归计算右子树深度
right := s.Depth(root.Right)
// 如果当前节点的左右子树高度差绝对值大于1,或者左、右子树有返回 -1 的情况(即不平衡),则返回 -1
if abs(left-right) > 1 || left == -1 || right == -1 {
return -1
}
// 返回左右子树深度最大值加1(代表加上当前节点这一层)
return max(left, right) + 1
}
// abs函数用于计算整数的绝对值
func abs(a int) int {
if a < 0 {
return -a
}
return a
}
// max函数用于返回两个整数中的较大值
func max(a, b int) int {
if a > b {
return a
}
return b
}
复杂度分析
❝时间复杂度:O(n)
- 其中 n 为二叉树的节点个数。
空间复杂度:O(n)。
- 最坏情况下,二叉树退化成一条链,递归需要 O(n) 的栈空间。