From e64749ff151f94e97e287e3dd1d82f3859365f15 Mon Sep 17 00:00:00 2001 From: ziyun Date: Mon, 1 Jul 2019 01:30:20 +0800 Subject: [PATCH 1/5] add --- Week_03/id_39/LeetCode_309_39.js | 15 ++++++++++++++ Week_03/id_39/LeetCode_70_39.js | 12 +++++++++++ Week_03/id_39/LeetCode_84_39.js | 35 ++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 Week_03/id_39/LeetCode_309_39.js create mode 100644 Week_03/id_39/LeetCode_70_39.js create mode 100644 Week_03/id_39/LeetCode_84_39.js diff --git a/Week_03/id_39/LeetCode_309_39.js b/Week_03/id_39/LeetCode_309_39.js new file mode 100644 index 00000000..1e81efbc --- /dev/null +++ b/Week_03/id_39/LeetCode_309_39.js @@ -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]; +}; \ No newline at end of file diff --git a/Week_03/id_39/LeetCode_70_39.js b/Week_03/id_39/LeetCode_70_39.js new file mode 100644 index 00000000..aae5d9eb --- /dev/null +++ b/Week_03/id_39/LeetCode_70_39.js @@ -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]; +}; \ No newline at end of file diff --git a/Week_03/id_39/LeetCode_84_39.js b/Week_03/id_39/LeetCode_84_39.js new file mode 100644 index 00000000..893e88cf --- /dev/null +++ b/Week_03/id_39/LeetCode_84_39.js @@ -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; +}; \ No newline at end of file From 528dbf9c7995f7b10681f66ab062aa6ee64235ca Mon Sep 17 00:00:00 2001 From: ziyun Date: Mon, 1 Jul 2019 01:33:00 +0800 Subject: [PATCH 2/5] add --- Week_03/id_39/NOTE.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Week_03/id_39/NOTE.md b/Week_03/id_39/NOTE.md index 107ea7d6..dadb935a 100644 --- a/Week_03/id_39/NOTE.md +++ b/Week_03/id_39/NOTE.md @@ -1 +1,6 @@ # 学习笔记 + +- 这周把之前的用单调栈求解面积的视频又看了一遍,并做了代码实现,还是有点小迷糊,还是得多做 +- DP的题目 + - 思路都是从结果开始考虑,找子问题,看能不能倒推回去 + - 不过边界限制条件不太好想,得多写多练才可以 \ No newline at end of file From 907b899986fe80bda3377f14b3c541aab18f33b2 Mon Sep 17 00:00:00 2001 From: ziyun Date: Mon, 1 Jul 2019 01:38:40 +0800 Subject: [PATCH 3/5] update --- Week_04/id_39/LeetCode_309_39.js | 15 ++++++++++++++ Week_04/id_39/LeetCode_70_39.js | 12 +++++++++++ Week_04/id_39/LeetCode_84_39.js | 35 ++++++++++++++++++++++++++++++++ Week_04/id_39/NOTE.md | 5 +++++ 4 files changed, 67 insertions(+) create mode 100644 Week_04/id_39/LeetCode_309_39.js create mode 100644 Week_04/id_39/LeetCode_70_39.js create mode 100644 Week_04/id_39/LeetCode_84_39.js diff --git a/Week_04/id_39/LeetCode_309_39.js b/Week_04/id_39/LeetCode_309_39.js new file mode 100644 index 00000000..1e81efbc --- /dev/null +++ b/Week_04/id_39/LeetCode_309_39.js @@ -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]; +}; \ No newline at end of file diff --git a/Week_04/id_39/LeetCode_70_39.js b/Week_04/id_39/LeetCode_70_39.js new file mode 100644 index 00000000..aae5d9eb --- /dev/null +++ b/Week_04/id_39/LeetCode_70_39.js @@ -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]; +}; \ No newline at end of file diff --git a/Week_04/id_39/LeetCode_84_39.js b/Week_04/id_39/LeetCode_84_39.js new file mode 100644 index 00000000..893e88cf --- /dev/null +++ b/Week_04/id_39/LeetCode_84_39.js @@ -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; +}; \ No newline at end of file diff --git a/Week_04/id_39/NOTE.md b/Week_04/id_39/NOTE.md index 107ea7d6..dadb935a 100644 --- a/Week_04/id_39/NOTE.md +++ b/Week_04/id_39/NOTE.md @@ -1 +1,6 @@ # 学习笔记 + +- 这周把之前的用单调栈求解面积的视频又看了一遍,并做了代码实现,还是有点小迷糊,还是得多做 +- DP的题目 + - 思路都是从结果开始考虑,找子问题,看能不能倒推回去 + - 不过边界限制条件不太好想,得多写多练才可以 \ No newline at end of file From e819e22a65e0458cafb51cfc31402150630f0ceb Mon Sep 17 00:00:00 2001 From: ziyun Date: Mon, 1 Jul 2019 01:39:13 +0800 Subject: [PATCH 4/5] Revert "add" This reverts commit 528dbf9c7995f7b10681f66ab062aa6ee64235ca. --- Week_03/id_39/NOTE.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Week_03/id_39/NOTE.md b/Week_03/id_39/NOTE.md index dadb935a..107ea7d6 100644 --- a/Week_03/id_39/NOTE.md +++ b/Week_03/id_39/NOTE.md @@ -1,6 +1 @@ # 学习笔记 - -- 这周把之前的用单调栈求解面积的视频又看了一遍,并做了代码实现,还是有点小迷糊,还是得多做 -- DP的题目 - - 思路都是从结果开始考虑,找子问题,看能不能倒推回去 - - 不过边界限制条件不太好想,得多写多练才可以 \ No newline at end of file From ccf0a358d69322da881c2983c086ee5cbe701d5b Mon Sep 17 00:00:00 2001 From: ziyun Date: Mon, 1 Jul 2019 01:39:45 +0800 Subject: [PATCH 5/5] Revert "add" This reverts commit e64749ff151f94e97e287e3dd1d82f3859365f15. --- Week_03/id_39/LeetCode_309_39.js | 15 -------------- Week_03/id_39/LeetCode_70_39.js | 12 ----------- Week_03/id_39/LeetCode_84_39.js | 35 -------------------------------- 3 files changed, 62 deletions(-) delete mode 100644 Week_03/id_39/LeetCode_309_39.js delete mode 100644 Week_03/id_39/LeetCode_70_39.js delete mode 100644 Week_03/id_39/LeetCode_84_39.js diff --git a/Week_03/id_39/LeetCode_309_39.js b/Week_03/id_39/LeetCode_309_39.js deleted file mode 100644 index 1e81efbc..00000000 --- a/Week_03/id_39/LeetCode_309_39.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * @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]; -}; \ No newline at end of file diff --git a/Week_03/id_39/LeetCode_70_39.js b/Week_03/id_39/LeetCode_70_39.js deleted file mode 100644 index aae5d9eb..00000000 --- a/Week_03/id_39/LeetCode_70_39.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * @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]; -}; \ No newline at end of file diff --git a/Week_03/id_39/LeetCode_84_39.js b/Week_03/id_39/LeetCode_84_39.js deleted file mode 100644 index 893e88cf..00000000 --- a/Week_03/id_39/LeetCode_84_39.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * @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; -}; \ No newline at end of file