title: Best time to buy and Sell Stock- Another approach in Python
body: <p>QUESTION-Say you have an array for which the <code>ith</code> element is the price of a given stock on day<code>i</code>.</p>
  <p>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.</p>
  <h2>Note that you cannot sell a stock before you buy one.</h2>
  <p>Example 1:</p>
  <pre><code>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.
  </code></pre>
  <p>Example 2:</p>
  <pre><code>Input: [7,6,4,3,1]
  Output: 0
  Explanation: In this case, no transaction is done, i.e. max profit = 0.
  </code></pre>
  <p>I believe that this problem can be solved using dynamic programming and before moving on to the solution simply ,I tried to solve this problem using my own approach .
  I did checked out the brute force algorithm and realized that my approach is not similar to brute force</p>
  <pre><code>public class Solution {
      public int maxProfit(int prices[]) {
          int maxprofit = 0;
          for (int i = 0; i &lt; prices.length - 1; i++) {
              for (int j = i + 1; j &lt; prices.length; j++) {
                  int profit = prices[j] - prices[i];
                  if (profit &gt; maxprofit)
                      maxprofit = profit;
              }
          }
          return maxprofit;
      }
  }
  </code></pre>
  <p>Here ,is my approach</p>
  <pre><code>class Solution:
      def maxProfit(self, prices: List[int]) -&gt; int:
          res=0
          if not prices:
              return 0
          idx=prices.index(min(prices))
          value=min(prices)
          try:
              for i in range (idx+1,len(prices)):
                  res=max(res,prices[i]-value)
          except IndexError :
              return 0
          return res    
  </code></pre>
  <p>My code passed the sample test case and 143/200 cases and fails for this one .</p>
  <pre><code>Input: [2,4,1]
  Output: 0
  Expected: 2
  </code></pre>
  <p>How can I improve my code ? How can I make this approach work ? or if this approach is totally wrong please elaborate .</p>
  <p><em>I believe the time complexity of my approach is better than the brute force and therefore,to struggle and make this code work;later check out the dynamic programming approach as well</em></p>