前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift 最小栈 - LeetCode

Swift 最小栈 - LeetCode

作者头像
韦弦zhy
发布2018-12-24 13:57:14
5700
发布2018-12-24 13:57:14
举报

LeetCode

题目: 最小栈

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。

  • push(x) -- 将元素 x 推入栈中。
  • pop() -- 删除栈顶的元素。
  • top() -- 获取栈顶元素。
  • getMin() -- 检索栈中的最小元素。
示例:

打乱一个没有重复元素的数组。

示例:
代码语言:javascript
复制
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> 返回 -3.
minStack.pop();
minStack.top();      --> 返回 0.
minStack.getMin();   --> 返回 -2.
方案1:

用数组存数据,top就是最后存的,最小值排序后返回最小的

代码1:

不写了哈、、、运行时间太长、、、没过

方案二:

在方案一的基础上,用一个数组存最小值,pop的时候看是不是最小值,是的最小值数组也pop一个

代码二:
代码语言:javascript
复制
class MinStack {
    
    var stackTop: Int?
    var stack: [Int]
    var stackMin: [Int]

    
    /** initialize your data structure here. */
    init() {
        stack = [Int]()
        stackTop = nil
        stackMin = [Int]()
    }
    
    func push(_ x: Int) {
        stackTop = x
        stack.append(x)
        if stackMin.isEmpty {
            stackMin.append(x)
        } else if x <= stackMin.last! {
            stackMin.append(x)
        }
    }
    
    func pop() {
        let top = stack.removeLast()
        if top == stackMin.last! {
            stackMin.removeLast()
        }
        stackTop = stack.last
    }
    
    func top() -> Int {
        return stackTop!
    }
    
    func getMin() -> Int {
        return stackMin.last!
    }
}


/**
 * Your MinStack object will be instantiated and called as such:
 * let obj = MinStack()
 * obj.push(x)
 * obj.pop()
 * let ret_3: Int = obj.top()
 * let ret_4: Int = obj.getMin()
 */
初级这一章节做完了,个人感觉就是路还长,继续努力

路还长

用Swift开始学习算法中,在LeetCode中做初级算法这一章节,这是我做的最后一题,这个最简单章节终于完工了、、、将做的题目在此做个笔记,希望有更好方法同学们cue我哦。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.12.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目: 最小栈
    • 示例:
      • 示例:
        • 方案1:
          • 代码1:
            • 方案二:
              • 代码二:
                • 初级这一章节做完了,个人感觉就是路还长,继续努力
                  • 用Swift开始学习算法中,在LeetCode中做初级算法这一章节,这是我做的最后一题,这个最简单章节终于完工了、、、将做的题目在此做个笔记,希望有更好方法同学们cue我哦。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档