Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions Week_04/id_39/LeetCode_309_39.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/**
* @param {number[]} prices
* @return {number}
* https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/
* 只考虑前一天
*/
var maxProfit = function(prices) {
let sell = [0], buy = [-prices[0]], cool = [0];
for (let i = 1; i < prices.length; i++) {
sell[i] = Math.max(buy[i-1] + prices[i], sell[i-1]);
buy[i] = Math.max(cool[i-1] - prices[i], buy[i-1]);
cool[i] = Math.max(sell[i-1], buy[i-1], cool[i-1]);
}
return sell[sell.length-1];
};
12 changes: 12 additions & 0 deletions Week_04/id_39/LeetCode_70_39.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**
* @param {number} n
* @return {number}
* https://leetcode.com/problems/climbing-stairs/
*/
var climbStairs = function(n) {
let dp = [0, 1, 2];
for (let i = 3; i <= n; i++) {
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
};
35 changes: 35 additions & 0 deletions Week_04/id_39/LeetCode_84_39.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/**
* @param {number[]} heights
* @return {number}
* https://leetcode.com/problems/largest-rectangle-in-histogram/
* 回顾第一周视频,以栈的解法解答该题目
*/
class newStack {
constructor () {
this.arr = [...arguments];
}
peek () {
return this.arr[this.arr.length - 1];
}
push (node) {
this.arr.push(node);
}
pop () {
return this.arr.pop();
}
}

var largestRectangleArea = function(heights) {
let stack = new newStack(-1), maxArea = 0;

for (let i = 0; i < heights.length; i++) {
while(heights[i] < heights[stack.peek()] && stack.peek() != -1) {
maxArea = Math.max(maxArea, heights[stack.pop()] * (i - stack.peek() - 1 ));
}
stack.push(i);
}
while (stack.peek() != -1) {
maxArea = Math.max(maxArea, heights[stack.pop()] * (heights.length - stack.peek() - 1 ));
}
return maxArea;
};
5 changes: 5 additions & 0 deletions Week_04/id_39/NOTE.md
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
# 学习笔记

- 这周把之前的用单调栈求解面积的视频又看了一遍,并做了代码实现,还是有点小迷糊,还是得多做
- DP的题目
- 思路都是从结果开始考虑,找子问题,看能不能倒推回去
- 不过边界限制条件不太好想,得多写多练才可以