ARTS 0906: 辅助栈记录每层最小值、OSI 模型从未真正落地与与其被动等待被颠覆不如主动设计规则

简介: 每周完成一个 ARTS: 至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tips、Share 简称 ARTS)## Algorithm[LeetCode 155. 最小栈](https://leetcode.cn/problems/min-stack/descript

每周完成一个 ARTS: 至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tips、Share 简称 ARTS)

Algorithm

LeetCode 155. 最小栈

image-20260906012935120

第一版:单个 minIndex

最开始的想法是用一个 minIndex 记录当前最小值在 list 中的下标。push 的时候比较并更新 minIndex,getMin 直接通过 minIndex 取值。

问题:pop 的时候如果弹出的恰好是最小值,就需要重新遍历/排序找新的最小值,做不到 O(1)。

而且只记录「倒数第二小」也不够,连续 pop 多次,每次弹出的都可能是当前最小值,需要第三小、第四小……本质上需要记住每一层的最小值。

第二版:辅助栈

用一个辅助栈 minStack,和主栈同步 push/pop。minStack 每一层存的是「从栈底到当前这一层为止的最小值」。这种方式是我问 AI 才知道的,随然多了一个 ArrayList 但是 push 和 getMin 都是 O(1)

操作 主栈 stack 辅助栈 minStack
push(5) [5] [5]
push(3) [5, 3] [5, 3]
push(7) [5, 3, 7] [5, 3, 3]
push(1) [5, 3, 7, 1] [5, 3, 3, 1]
pop() [5, 3, 7] [5, 3, 3]
getMin() — 栈顶 = 3 ✓

关键:push 时辅助栈压入 min(新值, minStack 栈顶);pop 时两个栈一起弹;getMin 直接读辅助栈栈顶。

最终代码:

import java.util.ArrayList;

class MinStack {
   

    private final ArrayList<Integer> stack;
    private final ArrayList<Integer> minStack;

    public MinStack() {
   
        stack = new ArrayList<>();
        minStack = new ArrayList<>();
    }

    public void push(int value) {
   
        stack.add(value);
        if (minStack.isEmpty() || value <= minStack.get(minStack.size() - 1)) {
   
            minStack.add(value);
        } else {
   
            minStack.add(minStack.get(minStack.size() - 1));
        }
    }

    public void pop() {
   
        stack.remove(stack.size() - 1);
        minStack.remove(minStack.size() - 1);
    }

    public int top() {
   
        return stack.get(stack.size() - 1);
    }

    public int getMin() {
   
        return minStack.get(minStack.size() - 1);
    }
}

复杂度:

  • 时间:push / pop / top / getMin 全部 O(1)
  • 空间:O(n),辅助栈和主栈等长

需要注意的点:

  1. push 时先 add 再更新 minIndex(顺序反了会导致 index 指错)
  2. pop 时注意 remove 之后 size 已经变了,不要用变化后的 size 去操作另一个栈
  3. 单个 minIndex 方案在 pop 最小值时需要重新遍历,无法做到 O(1)

Review

文章:https://www.practicalnetworking.net/stand-alone/the-truth-about-the-osi-model/

文章指出 OSI 模型从未在实际网络中被广泛使用,当年因委员会争论过多而迟迟无法落地,反而是更简洁的 TCP/IP 模型先行投产并成为事实标准。但 OSI 作为教学工具仍有价值,关键在于教法要对:应把每一层看作「抽象层」,关注其承担的职责(如 L3 负责端到端、L4 负责服务到服务),而不是死记硬背层名和定义。各职责之间并非严格按层序执行,实际协议中顺序可能交叉。作者建议未来全面转向 5 层 TCP/IP 模型,但现阶段教育和认证体系仍绑定 OSI,短期内难以脱离。

Tips

1)修改 commit 信息

1、查看提交历史,找到需要修改的 commit 的前一个 commit id:

git log

2、执行交互式 rebase 进入编辑:

git rebase -i <commit-id>

按 i 进入编辑模式,将目标提交前的 pick 改为 edit,按 Esc 输入 :wq 保存退出(同 Vim 逻辑)。若仅修改提交信息,直接执行 git commit --amend。

3、修改文件内容(如删除不必要的信息等),修改完成后重新提交(也可直接在 IDE 中操作):

git add .
git commit --amend

4、继续执行后续 rebase 流程:

git rebase --continue

5、强制推送到远程(使用比 --force 更安全的 --force-with-lease):

git push --force-with-lease <remote> <branch>

6、若推送遇到登录认证失败,使用 gh 唤起浏览器完成授权:

gh auth refresh -h github.com

7、查看 GitHub 登录状态,确认登录成功:

gh auth status

2)不让 Cursor 进行 commit 的时候携带上 "Co-authored-by" 信息,之需要修改配置(取消这个 Commit Attribution):

image-20260906185938374

Share

文章:https://www.gatesnotes.com/a-turbulent-ai-era-and-critical-choices-to-make

Bill Gates 在 2026 年 8 月发表了这篇长文,核心论点是:AI 有可能成为「有史以来最伟大的均衡器」,但前提是我们现在就做出正确的选择。

Gates 对 AI 的态度始终是乐观的。他看好 AI 在医疗、教育、农业、清洁能源和科学研究等领域的巨大潜力,认为 AI 能让优质资源触达更多人。但这次他的语气比以前更务实——他第一次表示希望技术的发展速度能稍微慢一点,给社会留出准备时间。

文章最有价值的部分是他提出的几个建设性方案:

  1. 「人类保留」岗位:在医疗护理等需要人类情感和判断力的领域,应该有意识地保留人类角色,而不是全部交给 AI。
  2. 治理框架:呼吁建立新的国内和国际组织来管理 AI 风险,没有全球框架的话贫富差距只会加大。
  3. 经济政策:讨论了对 AI 和机器人征税的可能性,用来缓解大规模自动化带来的社会冲击。

这篇文章不是在贩卖焦虑,而是在说:AI 本身是中性的,关键在于我们怎么选。与其被动等待被颠覆,不如主动设计规则让技术为更多人服务。

目录
相关文章
|
机器学习/深度学习 资源调度 程序员
PMP考试计算题专题
PMP考试计算题专题
825 0
|
11天前
|
存储 弹性计算 缓存
阿里云四款价格最便宜云服务器指南:2核2G、2核4G、4核8G配置,38元起,配置与价格全对比
针对阿里云四款常见低成本云服务器,本文从配置结构、适用边界、成本周期与运维复杂度四个维度展开严谨评估:轻量应用服务器2核2G、200M峰值带宽、40GB ESSD盘约38元/年;经济型e实例2核2G、3M带宽约99元/年;通用算力型u1实例2核4G、5M带宽约199元/年;u1实例4核8G、5M带宽约925.95元/年。文章提醒活动价受地域、周期、优惠券等影响,应以购买页为准,助读者按业务阶段理性选型。
|
2月前
|
存储 JavaScript 安全
dsh 拆解系列 Vol.01:没有特权内核的 Agent 运行时
DeepSeek Harness(dsh)是DeepSeek开源的Agent运行时框架,秉持“一切皆插件”理念,将模型适配器、工具、会话、主循环等全部解耦为可配置、可替换、可卸载的插件,基于Cordis元框架实现时空可组合性。当前v0.1.0-rc.7为开发者预览版,MIT协议,强调工程可扩展性而非仅功能堆砌。
343 2
dsh 拆解系列 Vol.01:没有特权内核的 Agent 运行时
|
1月前
|
Web App开发 人工智能 前端开发
编译通过 ≠ 能用:试试 UseIO,把前端验收还给 AI 自己
AI写代码只需3分钟,但人工验收常耗一整个下午。本文揭示瓶颈不在“生成”,而在“验收”——弹窗遮挡、点击无响应、接口500等前端顽疾,typecheck和单测均难覆盖。文章提出将验收拆解为视觉、交互、网络、控制台四层,让AI自主截屏分析、模拟点击、抓取请求、检查日志,实现闭环自验,真正释放开发者心流。(239字)
|
1月前
|
人工智能 自然语言处理 数据可视化
QoderWork完全实操指南:桌面端AI智能体从安装配置到Skill开发全教程
QoderWork作为桌面端本地AI智能体,跳出传统AI仅输出文本回复的局限,真正做到在本机完成文件管理、数据处理、文档生成、跨软件办公自动化,“AI实习生”定位可以承接大量重复枯燥工作。依托沙盒隔离运行保障敏感文件安全,零代码上手降低普通用户使用门槛,Skill扩展系统可以沉淀团队专属自动化流程,同时支持多模型灵活接入,兼顾个人、小团队以及企业不同层级需求。
372 0
|
2月前
|
人工智能 安全 API
最新版通义千问(Qwen3.8-Max)功能介绍
在人工智能大模型技术快速迭代的当下,通义千问推出的Qwen3.8-Max凭借突破性的技术架构与全面升级的能力,成为大模型领域的全新标杆。作为通义千问系列迄今规模最大、能力最强的旗舰模型,Qwen3.8-Max以2.4万亿总参数的体量,结合前沿稀疏混合专家(MoE)架构,在保持高效推理的同时,实现了文本理解、代码生成、多模态交互、长周期任务执行等核心能力的跨越式提升,为个人用户、开发者与企业级应用提供了前所未有的AI能力支撑。
618 1
|
2月前
|
存储 人工智能 前端开发
开源版"带记忆的 Claude Desktop"——我试了 Rowboat 的多 Agent 编排
Rowboat 是一款开源AI工作操作系统(Apache-2.0,TS编写),主打多Agent协同编排、本地长期记忆与自动化工作流。支持邮件处理、代码重构、会议准备等场景,所有数据存于本地Obsidian兼容知识图谱,兼顾隐私与复利式上下文积累。
228 3
|
机器学习/深度学习 人工智能 API
大模型推理服务全景图
国内大模型推理需求激增,性能提升的主战场将从训练转移到推理。
4228 150

热门文章

最新文章