2021-10-16 Daily-Challenge
Today I have done leetcode's October LeetCoding Challenge with cpp
.
October LeetCoding Challenge 16
Description
Best Time to Buy and Sell Stock III
You are given an array coordinates
, coordinates[i] = [x, y]
, where [x, y]
represents the coordinate of a point. Check if these points make a straight line in the XY plane.
Example 1:
Input: coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]] Output: true
Example 2:
Input: coordinates = [[1,1],[2,2],[3,4],[4,5],[5,6],[7,7]] Output: false
Constraints:
2 <= coordinates.length <= 1000
coordinates[i].length == 2
-10^4 <= coordinates[i][0], coordinates[i][1] <= 10^4
coordinates
contains no duplicate point.
Solution
class Solution {
int maxProfit(int k, vector<int>& prices) {
int len = prices.size();
if(len < 2) return 0;
int buy[len];
int sell[len];
buy[0] = -prices[0];
sell[0] = 0;
for(int i = 1; i < len; ++i) {
buy[i] = max(buy[i - 1], -prices[i]);
sell[i] = 0;
}
for(int i = 1; i <= k; ++i) {
for(int j = 1; j < len; ++j) {
sell[j] = max(sell[j], sell[j - 1]);
sell[j] = max(sell[j], buy[j - 1] + prices[j]);
}
for(int j = 1; j < len; ++j) {
buy[j] = max(buy[j - 1], sell[j - 1] - prices[j]);
}
}
return sell[len - 1];
}
public:
int maxProfit(vector<int>& prices) {
return maxProfit(2, prices);
}
};
// Accepted
// 214/214 cases passed (124 ms)
// Your runtime beats 83.81 % of cpp submissions
// Your memory usage beats 61.08 % of cpp submissions (76 MB)