394.字符串解码
示例 1:
输入:s = "3[a]2[bc]"
输出:"aaabcbc"
要点:1.全局i, 2.识别character, 数字.isDigit(c), 【temp】
java
class Solution {
int i= 0;
public String decodeString(String s) {
StringBuilder ans = new StringBuilder();
while(i < s.length() && s.charAt(i) != ']'){
char c = s.charAt(i);
if(Character.isDigit(c)){
int k = 0;
while(Character.isDigit(s.charAt(i))){
k = k*10 + s.charAt(i) - '0';
i++;
}
i++;
String temp = decodeString(s);
i++;
while(k>0){
ans.append(temp);
k--;
}
}else{
ans.append(c);
i++;
}
}
return ans.toString();
}
}
470.用rand7()实现rand10()
要点:
//(rand[y] - 1)*y + rand[y]
//num-1 %10 +1
java
/**
* The rand7() API is already defined in the parent class SolBase.
* public int rand7();
* @return a random integer in the range 1 to 7
*/
class Solution extends SolBase {
//(rand[y] - 1)*y + rand[y]
//num-1 %10 +1
public int rand10() {
while(true){
int a = rand7();
int b = rand7();
int num = (a - 1) * 7 + b;
if(num <= 40){
return (num -1) % 10 + 1;
}
}
}
}
64.最小路径和
示例 1:

输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。
要点:二维dp
java
class Solution {
public int minPathSum(int[][] grid) {
//二维dp,注意n,m
int m = grid[0].length;
int n = grid.length;
int[][] dp = new int[n][m];
dp[0][0] = grid[0][0];
for(int i = 1; i < m; i++){
dp[0][i] = grid[0][i] + dp[0][i-1];
}
for(int j = 1; j <n; j++){
dp[j][0] =grid[j][0] + dp[j-1][0];
}
for(int i = 1; i < n; i++){
for(int j = 1; j < m; j++){
dp[i][j] = Math.min(dp[i-1][j], dp[i][j-1]) + grid[i][j];
}
}
return dp[n-1][m-1];
}
}
104.二叉树的最大深度
要点:队列
java
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public int maxDepth(TreeNode root) {
//队列
//特别null要考虑到
if(root == null){
return 0;
}
Deque<TreeNode> queue = new LinkedList<>();
queue.offer(root);
int ceshu = 0;
while(!queue.isEmpty()){
int size = queue.size();
for(int i = 0; i < size; i++){
TreeNode temp = queue.poll();
if(temp.left != null){
queue.offer(temp.left);
}
if(temp.right != null){
queue.offer(temp.right);
}
}
ceshu++;
}
return ceshu;
}
}
随机刷新知识
构建范式:七大主流设计模式
理解Agent的架构,本质上是理解它的"思考"与"执行"逻辑。以下是目前最主流的七种设计模式,它们各有侧重,适用于不同的任务场景。
| 范式 | 核心特点 | 优缺点 | 适用场景 |
|---|---|---|---|
| ReAct (Reason + Act) | 将"推理"和"行动"紧密结合,在一个循环中交替进行:思考→行动→观察→再思考... | 优点 :高度灵活,适应性强,过程透明,决策可解释。 缺点:效率较低,耗时耗token,可能陷入局部最优。 | 需要与外部环境持续交互的动态任务,如知识密集型问答、网页浏览、复杂信息检索。 |
| Plan & Execute | 首先生成一个完整的全局计划,再按顺序执行各步骤,并可在执行过程中动态调整。 | 优点 :处理复杂任务时效率高,在规划阶段即可优化路径,避免ReAct的"短视"问题。 缺点:首步质量对整体结果影响巨大。 | 流程明确、步骤繁多的结构化任务,如自动化报告生成、项目编排、数据批量处理等。 |
| Reflection (反思) | 通过自我批评和迭代优化来持续提升输出质量,这一思想与你们图纸识别项目中用到的"自我批评"完全相同。 | 优点 :能显著提升最终输出质量,有效降低错误率。 缺点:耗时长,成本高,迭代过程可能引入新的偏差。 | 追求高质量、高准确性输出的任务,如代码生成、文案精修、专业文档审查。 |
| ReWOO (Reason without Observation) | 分离推理与观察过程,先规划好所有需要的工具调用,再一次性获取结果后汇总。 | 优点 :显著减少模型调用次数和Token消耗,大幅降低成本。 缺点:灵活性降低,一旦前期推理出错,后续步骤可能全部失效。 | 对成本敏感,且工具调用结果相对可预测的场景。 |
| LLM Compiler | 将复杂的任务描述分解成类似代码指令的并行可执行子任务,最大化执行效率。 | 优点 :执行效率极高,适合大规模并行计算。 缺点:实现复杂,对任务的可并行化要求高。 | 大型数据处理任务、多源信息同步处理、模拟仿真等计算密集型任务。 |
| Basic Reflection | 最简单的反思模式,通常由生成器与评判器两个基础模块构成一次优化循环。 | 优点 :流程简单,易于实现。 缺点:优化效果有限,未充分利用历史经验。 | 对任务质量要求中等,希望引入基本质检的场景。 |
| LATS (Language Agent Tree Search) | 结合蒙特卡洛树搜索算法,在任务空间中探索多条潜在路径,选择最优解。 | 优点 :决策质量极高,拥有全局视野。 缺点:复杂度最高,计算量和耗时巨大。 | 探索型、开放式任务,如破解谜题、产品设计、战略决策等。 |
碎碎念:后续会更新每天学习的八股和算法题,暑假实习找不到了,开始准备秋招的第天。努力连续更新100天!今天在测试一个agent,用coze生成然后本地改,发现效果一般哇,继续看看怎么改吧。加油加油,冲冲冲,一起都会好起来的。要多背八股了。