8.4 extra added later

补一下

1] Min Stack

class MinStack {
public:
    /** initialize your data structure here. */
    stack<int> s;
    stack<int> mins;
    MinStack() {
    }
    
    void push(int x) {
        s.push(x);
        if (mins.empty() || mins.top()>=x) mins.push(x);
    }
    
    void pop() {
        if (!s.empty()) {
            if (mins.top()==s.top()) mins.pop();
            s.pop();
        }
    }
    
    int top() {
        if (!s.empty()) return s.top();
        return -1;
    }
    
    int getMin() {
        if (!mins.empty()) return mins.top();
        return -1;
    }
};

2] Minimum Path Sum

这么简单的dp做这么久不开森,,练练练
。。。minpath递增着index不是一样的吗orz

optimize: see hint at the end https://discuss.leetcode.com/topic/15269/10-lines-28ms-o-n-space-dp-solution-in-c-with-explanations/2
(keep only two arrays)

    int minPathSum(vector<vector<int>>& grid) {
        int m = grid.size(), n = grid[0].size();
        int dp[m+1][n+1];
        dp[m-1][n-1] = grid[m-1][n-1];
        for (int i=n-2; i>=0; --i) {
            dp[m-1][i] = grid[m-1][i] + dp[m-1][i+1]; 
        }
        for (int j=m-2;j>=0; --j) {
            dp[j][n-1] = grid[j][n-1] + dp[j+1][n-1];
        }
        
        for (int i=n-2; i>=0; --i) {
            for (int j=m-2; j>=0; --j) {
                dp[j][i] = grid[j][i] + min(dp[j+1][i], dp[j][i+1]);
            }
        }
        return dp[0][0];
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,351评论 0 33
  • 一群人,今天能走到一起不容易!有的强势,有的随和;有的厉害,有的温顺;有的计较,有的大度;有的伶俐,有的深沉;有的...
    每个人的孟母堂阅读 1,066评论 0 1
  • 时间管理的经典书籍,值得反复看。如果能把这七个习惯建立并融会贯通,相信我的人生会越来越美好。
    逸凡小仙阅读 825评论 0 0
  • 大家好,好久不见,真的有些久! 见信如面,算是一份此时的心情,或是琐碎念叨。想到什么就写什么更没有太多的思虑顾及,...
    麦先生VBA阅读 1,644评论 0 0
  • 说几句: 终于,写了这么久,要翻篇了。没错,在我的童年,这个时候开始,已经有了比较完整的记忆了。很多人都在说,自己...
    Chosing_春幸阅读 1,553评论 0 0