leecodecode【面试150】【2026.6.19打卡-java版本】

最小栈

要点:stack【int【】】,里面放的数组,int\[\]{value, premin}

java 复制代码
class MinStack {
    //
    Deque<int[]> stack = new ArrayDeque<>();

    public MinStack() {
        stack.push(new int[]{0,Integer.MAX_VALUE});


        
    }
    
    public void push(int value) {
        stack.push(new int[]{value,Math.min(value,getMin())});
        
    }
    
    public void pop() {
        stack.pop();
        
    }
    
    public int top() {
        return stack.peek()[0];
        
    }
    
    public int getMin() {
        return stack.peek()[1];
        
    }
}

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.push(value);
 * obj.pop();
 * int param_3 = obj.top();
 * int param_4 = obj.getMin();
 */

逆波兰表达式求值

要点:模拟

java 复制代码
class Solution {
    public int evalRPN(String[] tokens) {

        int ans = 0;
        Deque<Integer> stack = new ArrayDeque<>();
        for(String s: tokens){
            if(s.length() > 1){
                 stack.push(Integer.parseInt(s));
                 continue;
            }
            char token = s.charAt(0);
            if(token == '+' || token == '-' || token == '*' || token == '/'){
                int b = stack.pop();
                int a = stack.pop();
                int c = -1;
                if(token == '+'){
                    c =a+b;
                }else if(token == '-'){
                    c = a -b;
                }else if(token == '*'){
                    c =a*b;
                }else if(token == '/'){
                    c = a/b;
                }
                //ans+=c;
                stack.push(c);

            }else{
                //Integer.parseInt(s)
                stack.push(Integer.parseInt(s));
            }
        }

        return stack.peek();
        
    }
}

基本计算器

要点:记录整个数字之前的num和符号,遇到()就入栈计算

java 复制代码
class Solution {
    public int calculate(String s) {
        Deque<Integer> stack = new ArrayDeque<>();
        int sign = 1;
        int result = 0;
        int num = 0;

        for(int i = 0; i < s.length(); i++){
            char c = s.charAt(i);
            if(c >= '0' &&  c <= '9'){
                num = num*10 + (c - '0');
            }else if(c == '+'){
                result += sign*num;
                sign = 1;
                num=0;
            }else if(c == '-'){
                result += sign*num;
                sign = -1;
                num = 0;
            }else if( c == '('){
                stack.push(result);
                stack.push(sign);
                result = 0;
                sign = 1;
            }else if(c ==')'){
                result += sign*num;
                num = 0;
                int presign = stack.pop();
                int preres = stack.pop();
                result = preres + presign*result;

            }
        }
        result += sign * num;

        return result;
        
    }
}

随机知识

大厂AI Coding通关笔记(提示词模板+Spec完整释义)

一、核心概念:Spec 详解(编码必备)

1. 定义

Spec = Specification 规格/技术契约/需求说明书

无歧义、结构化、带硬性约束的技术实现规范,是AI编码、开发、联调、测试的唯一标准答案。

2. 编程场景核心含义

  • 接口Spec:请求方式、路径、入参(类型/必填/范围)、出参结构、错误码、异常格式

  • 功能Spec:做什么、不做什么、边界条件、性能指标、兼容要求

  • 测试Spec:测试场景、边界用例、异常用例、预期输出

3. 普通需求 VS 标准Spec(大厂扣分关键点)

  • 普通需求:口语化、模糊、无约束(例:写一个登录接口)

  • 标准Spec:结构化、全覆盖、无歧义、含性能/边界/规范约束

4. AI Coding中的Spec组成

提示词中这三部分 = 完整代码Spec: 1. 核心业务需求 2. 全部硬性约束 3. 严格输入输出规范

大厂评分核心:代码必须100%遵循Spec,不满足即扣分


二、AI Coding提示词标准编写5步法(大厂通用)

所有编码任务必须按此顺序编写,缺一直接不合格

步骤1:身份定位(拉高输出工业级标准)

指定大厂资深工程师身份,拒绝教学Demo、玩具代码

步骤2:明确核心需求(拆分两块)

  • 业务功能:场景、用途、输入来源

  • 算法/技术目标:数据量级、核心逻辑、性能预期

步骤3:填写硬性约束(最核心得分点)

技术栈、性能复杂度、边界异常、编码规范、安全扩展性

步骤4:结构化输入输出定义(Spec核心)

参数类型、取值范围、样例输入、正常/异常输出格式

步骤5:固定交付物清单

源码+注释+测试用例+复杂度+优化方案+风险说明


三、通用万能顶级提示词模板(可直接复制使用)

复制代码

【角色定位】 你是拥有10年一线大厂开发经验的资深工程师,精通{编程语言},熟悉工业级项目编码规范、高性能算法、并发安全、线上容错处理,输出代码严格符合国内头部互联网生产标准,拒绝简化教学demo,所有逻辑必须适配真实线上场景。 【核心需求(Spec业务)】 1. 业务功能: 2. 算法/技术目标: 3. 业务场景与数据量级: 【硬性约束条件(Spec规则)】 1. 技术栈:仅使用{指定语言/框架/依赖},禁止废弃API与冷门库 2. 性能约束:时间复杂度最优,控制内存占用,支持{量级}数据,避免超时、OOM 3. 边界异常:全覆盖空值、极值、重复数据、参数非法、IO异常、并发冲突、服务降级 4. 编码规范:语义化命名、抽取常量、无硬编码、单一职责、分层解耦、标准注释 5. 扩展性:核心逻辑解耦,支持后续迭代扩展 【输入输出规范(Spec契约)】 输入:参数类型、字段、取值范围、样例输入 输出:正常返回结构、错误码+错误信息、样例输出 【强制交付物(缺一不可)】 1. 完整可直接运行源码,无省略、无伪代码 2. 全量中英文注释(函数、参数、核心逻辑、边界处理) 3. 5组以上测试用例:常规、边界、极值、异常、批量数据 4. 时间/空间复杂度完整推导 5. 代码优缺点分析 + 两套优化方案 6. 线上风险、并发坑点、部署注意事项 7. 专家Code Review问题复盘与修复方案 【输出格式】 先需求拆解分析 → 再完整源码 → 测试用例 → 复杂度 → 优化方案 → CR报告


四、三大高频场景精简模板

1. 算法刷题/LeetCode模板

复制代码

【角色】大厂算法工程师,只输出全局最优解,拒绝暴力解法 【题目】粘贴原题 【约束】适配题目数据上限,全覆盖边界用例,保证AC无超时 【交付】解题思路+最优代码+复杂度推导+多组测试用例+优劣对比

2. 后端业务接口模板

复制代码

【角色】大厂后端高级开发,熟悉微服务、全局异常、参数校验、并发安全 【需求】实现XX业务接口 【约束】统一返回体、JSR303校验、缓存击穿/并发超卖处理、异常兜底 【交付】完整分层代码+单元测试+并发方案+接口调用示例

3. 自动化脚本/工具类模板

复制代码

【角色】大厂全栈开发,擅长高性能、低内存、兼容多环境脚本 【约束】流式处理防OOM、全异常捕获、兼容Windows/Linux 【交付】完整脚本+参数说明+测试案例+内存优化方案


五、高分进阶修饰词(必加,拉开差距)

  • 禁止简化逻辑、禁止省略边界、禁止伪代码、禁止"此处省略"

  • 严格遵循大厂Code Review标准,无内存泄漏、无循环引用、无硬编码

  • 优先最优解,不输出低效暴力方案

  • 适配高并发、大数据量线上真实场景


六、大厂AI Coding核心总结

  1. Prompt本质就是写一份完整代码Spec

  2. Spec不全 = AI代码缺边界、缺性能、缺规范 = 测试低分

  3. 标准流程:定身份 - 写需求 - 加约束 - 定IO - 定交付

  4. 最终目标:输出可上线工业级代码,而非教学Demo

碎碎念:后续会更新每天学习的八股和算法 题,开始准备秋招的第40天。努力连续更新100天!以后每天就按,秋招项目【java +agent】,科研,必做项目,算法,八股,锻炼身体来总结。

总结:aicoding半天

1.算法面试150 78/150【晚】 1h

2.秋招项目,【java 项目】,【修改,2h】

【agent 项目 】,【x修改,2h】

3.科研要跑一下,无

4.检测项目,准备数据集

6.背八股,无

7.锻炼身体,

反思:放假一天,每天认真干活