From c4e92495bc3f4afb057e178d4da2b2a8b3f9f7bb Mon Sep 17 00:00:00 2001 From: Hao Chen Date: Wed, 3 Apr 2019 21:47:19 +0800 Subject: [PATCH] update the problem description --- .../bestTimeToBuyAndSellStock.II.cpp | 41 ++++++++++++++----- .../bestTimeToBuyAndSellStock.III.cpp | 40 +++++++++++++----- .../bestTimeToBuyAndSellStock.IV.cpp | 35 ++++++++++------ .../bestTimeToBuyAndSellStock.cpp | 31 ++++++++++---- 4 files changed, 107 insertions(+), 40 deletions(-) diff --git a/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.II.cpp b/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.II.cpp index a81611820..67665bb01 100644 --- a/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.II.cpp +++ b/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.II.cpp @@ -2,16 +2,37 @@ // Author : Hao Chen // Date : 2014-06-18 -/********************************************************************************** -* -* Say you have an array for which the ith element is the price of a given stock on day i. -* -* Design an algorithm to find the maximum profit. You may complete as many transactions -* as you like (ie, buy one and sell one share of the stock multiple times). However, -* you may not engage in multiple transactions at the same time (ie, you must sell the -* stock before you buy again). -* -**********************************************************************************/ +/***************************************************************************************************** + * + * Say you have an array for which the ith element is the price of a given stock on day i. + * + * Design an algorithm to find the maximum profit. You may complete as many transactions as you like + * (i.e., buy one and sell one share of the stock multiple times). + * + * Note: You may not engage in multiple transactions at the same time (i.e., you must sell the stock + * before you buy again). + * + * Example 1: + * + * Input: [7,1,5,3,6,4] + * Output: 7 + * Explanation: Buy on day 2 (price = 1) and sell on day 3 (price = 5), profit = 5-1 = 4. + * Then buy on day 4 (price = 3) and sell on day 5 (price = 6), profit = 6-3 = 3. + * + * Example 2: + * + * Input: [1,2,3,4,5] + * Output: 4 + * Explanation: Buy on day 1 (price = 1) and sell on day 5 (price = 5), profit = 5-1 = 4. + * Note that you cannot buy on day 1, buy on day 2 and sell them later, as you are + * engaging multiple transactions at the same time. You must sell before buying again. + * + * Example 3: + * + * Input: [7,6,4,3,1] + * Output: 0 + * Explanation: In this case, no transaction is done, i.e. max profit = 0. + ******************************************************************************************************/ class Solution { public: diff --git a/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.III.cpp b/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.III.cpp index 72240c234..c8ab3f9c1 100644 --- a/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.III.cpp +++ b/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.III.cpp @@ -2,16 +2,36 @@ // Author : Hao Chen // Date : 2014-08-22 -/********************************************************************************** -* -* Say you have an array for which the ith element is the price of a given stock on day i. -* -* Design an algorithm to find the maximum profit. You may complete at most two transactions. -* -* Note: -* You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again). -* -**********************************************************************************/ +/***************************************************************************************************** + * + * Say you have an array for which the ith element is the price of a given stock on day i. + * + * Design an algorithm to find the maximum profit. You may complete at most two transactions. + * + * Note: You may not engage in multiple transactions at the same time (i.e., you must sell the stock + * before you buy again). + * + * Example 1: + * + * Input: [3,3,5,0,0,3,1,4] + * Output: 6 + * Explanation: Buy on day 4 (price = 0) and sell on day 6 (price = 3), profit = 3-0 = 3. + * Then buy on day 7 (price = 1) and sell on day 8 (price = 4), profit = 4-1 = 3. + * + * Example 2: + * + * Input: [1,2,3,4,5] + * Output: 4 + * Explanation: Buy on day 1 (price = 1) and sell on day 5 (price = 5), profit = 5-1 = 4. + * Note that you cannot buy on day 1, buy on day 2 and sell them later, as you are + * engaging multiple transactions at the same time. You must sell before buying again. + * + * Example 3: + * + * Input: [7,6,4,3,1] + * Output: 0 + * Explanation: In this case, no transaction is done, i.e. max profit = 0. + ******************************************************************************************************/ class Solution { diff --git a/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.IV.cpp b/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.IV.cpp index 96bab7f3a..e29e4c6a2 100644 --- a/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.IV.cpp +++ b/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.IV.cpp @@ -2,18 +2,29 @@ // Author : Hao Chen // Date : 2015-03-31 -/********************************************************************************** -* -* Say you have an array for which the ith element is the price of a given stock on day i. -* -* Design an algorithm to find the maximum profit. You may complete at most k transactions. -* -* Note: -* You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again). -* -* Credits:Special thanks to @Freezen for adding this problem and creating all test cases. -* -**********************************************************************************/ +/***************************************************************************************************** + * + * Say you have an array for which the ith element is the price of a given stock on day i. + * + * Design an algorithm to find the maximum profit. You may complete at most k transactions. + * + * Note: + * You may not engage in multiple transactions at the same time (ie, you must sell the stock before + * you buy again). + * + * Example 1: + * + * Input: [2,4,1], k = 2 + * Output: 2 + * Explanation: Buy on day 1 (price = 2) and sell on day 2 (price = 4), profit = 4-2 = 2. + * + * Example 2: + * + * Input: [3,2,6,5,0,3], k = 2 + * Output: 7 + * Explanation: Buy on day 2 (price = 2) and sell on day 3 (price = 6), profit = 6-2 = 4. + * Then buy on day 5 (price = 0) and sell on day 6 (price = 3), profit = 3-0 = 3. + ******************************************************************************************************/ class Solution { public: diff --git a/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.cpp b/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.cpp index 5fdc2baba..b7b90a649 100644 --- a/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.cpp +++ b/algorithms/cpp/bestTimeToBuyAndSellStock/bestTimeToBuyAndSellStock.cpp @@ -2,14 +2,29 @@ // Author : Hao Chen // Date : 2014-06-18 -/********************************************************************************** -* -* Say you have an array for which the ith element is the price of a given stock on day i. -* -* If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), -* design an algorithm to find the maximum profit. -* -**********************************************************************************/ +/***************************************************************************************************** + * + * Say you have an array for which the ith element is the price of a given stock on day i. + * + * If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of + * the stock), design an algorithm to find the maximum profit. + * + * Note that you cannot sell a stock before you buy one. + * + * Example 1: + * + * Input: [7,1,5,3,6,4] + * Output: 5 + * Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5. + * Not 7-1 = 6, as selling price needs to be larger than buying price. + * + * Example 2: + * + * Input: [7,6,4,3,1] + * Output: 0 + * Explanation: In this case, no transaction is done, i.e. max profit = 0. + * + ******************************************************************************************************/ class Solution { public: