[C + +] Leetcode:77 best time to Buy and Sell Stock II (greedy algorithm)

Source: Internet
Author: User

Title:

Say you has an array for which the i-th element is the price of a given-stock on day I.

design an algorithm to find the maximum profit. You could complete as many transactions as (ie, buy one and sell one share of the stock multiple times). However, engage in multiple transactions for the same time (ie, you must sell the stock before you buy again). /p>

< Strong style= "Color:rgb (51,51,51)" > idea: This topic allows us to make multiple transactions, and leetcode:54 best time to Buy and Sell stock There are differences. But at the same time, there was only one share in hand. Using the greedy algorithm The idea that we lock a low price, The price rises to the local highest point to throw the stock, as long as some earn to do trading, accumulate all the price difference. Note Two, first we allow the same day to sell the stock and then buy, 2nd, if the stock price every day, then we buy/the next day to sell the total proceeds, and the first day to buy, the last day to sell the same proceeds. If the stock has a price decline, we do not buy, do not count into the total income, we will only obtain the positive benefits into the total income.

example: In the case of a ascending subsequence, such as the 1,2,3,4 sequence in 5,1,2,3,4,0, for two operation scenarios:
One, buy in 1, 4 sell;
Two, buy at 1, 2 sell at the same time buy, 3 sell at the same time buy, 4 sell;
Under these two operations, the benefits are the same.

background: greedy algorithm

greedy method , also known as is a choice that takes the best or optimal (ie most advantageous) position in the current state in each step of the selection, hoping to result in the best or most optimal algorithm. he Only the local optimal solution optimal solution But for a wide range of problems he can produce a global optimal solution or an approximate solution to the overall optimal solution.

Complexity: One-time traversal, O (N)

AC Code:

Class Solution {public:    int maxprofit (vector<int> &prices) {        //greedy algorithm obtains local optimal        if (prices.size () = = 0) return 0;                int maxprofit = 0;        for (int i = 1; i < prices.size (); i++)        {            if (Prices[i] > prices[i-1])            {                Maxprofit + = prices[i]-pric ES[I-1];            }        }                return maxprofit;}    ;


[C + +] Leetcode:77 best time to Buy and Sell Stock II (greedy algorithm)

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.