GitHub Trending日榜深度解析:从排序逻辑到项目落地
2026/10/2 10:41:32
创建两个栈,一个用来“正常进出”,另一个记录“当前最小值”
原因是:MinStack类中的push/pop是自定义方法,而stack1/stack2是类内部的Stack对象 —— 二者属于不同的 “作用域”:
MinStack的push:是minStack.push(5)(调用的是MinStack类的方法);stack1的push:是stack1.push(5)(调用的是Stack类的方法)。简单说:方法是 “依附于对象 / 类” 的,只要调用时明确是哪个对象的方法,就不会冲突。
stack2 会和 stack1 存储完全相同长度的元素,比如 stack1 存 10000 个元素,stack2 也存 10000 个 —— 但其实很多值是重复的(比如连续压入比最小值大的数,stack2 反复压入同一个最小值)。
这种设计的空间复杂度是 O (n)(和优化版一样),但实际存储的重复数据会导致: