topcode【随机算法题】【2026.5.15打卡-java版本】

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生成然后本地改,发现效果一般哇,继续看看怎么改吧。加油加油,冲冲冲,一起都会好起来的。要多背八股了。

相关推荐
洛水水1 小时前
【力扣100题】44.完全平方数
算法·leetcode·职场和发展
橙淮1 小时前
哈希核心:高效映射与安全加密
算法·哈希算法
JAVA学习通3 小时前
北京明光云振铎数据科技Java面经
java·开发语言·科技
贫民窟的勇敢爷们9 小时前
SpringBoot整合AOP切面编程实战,实现日志统一记录+接口权限校验
java·spring boot·spring
浅念-9 小时前
递归解题指南:LeetCode经典题全解析
数据结构·算法·leetcode·职场和发展·排序算法·深度优先·递归
Kiling_070410 小时前
Java集合进阶:Set与Collections详解
算法·哈希算法
AC赳赳老秦10 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
迈巴赫车主10 小时前
Java基础:list、set、map一遍过
java·开发语言
智者知已应修善业10 小时前
【51单片机89C51及74LS273、74LS244组成】2022-5-28
c++·经验分享·笔记·算法·51单片机