leetcode 121. Best Time to Buy and Sell Stock
来源:互联网 发布:淘宝双11活动入口 编辑:程序博客网 时间:2024/06/05 12:48
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.
Example 1:
Input: [7, 1, 5, 3, 6, 4]Output: 5max. difference = 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: 0In this case, no transaction is done, i.e. max profit = 0.简单题啦。
package leetcode;public class Best_Time_to_Buy_and_Sell_Stock_121 {public int maxProfit(int[] prices) {if(prices.length==0){return 0;}int lowest=prices[0];int highest=prices[0];int maxProfit=0;for(int i=1;i<prices.length;i++){if(prices[i]>highest){highest=prices[i];if(highest-lowest>maxProfit){maxProfit=highest-lowest;}}else if(prices[i]<lowest){lowest=prices[i];highest=lowest;}}return maxProfit;}public static void main(String[] args) {// TODO Auto-generated method stubBest_Time_to_Buy_and_Sell_Stock_121 b=new Best_Time_to_Buy_and_Sell_Stock_121();int[] prices=new int[]{3,2,6,5,0,3};System.out.println(b.maxProfit(prices));}}这一题居然有Solution。 https://leetcode.com/problems/best-time-to-buy-and-sell-stock/solution/
Approach #2 (One Pass) [Accepted]
Algorithm
假设给定数组是:
[7, 1, 5, 3, 6, 4]
以下是图表表示:
我们需要找到 跟在最低点后的最高点。可以使用两个变量:minprice 和 maxprofit ,分别代表最低点和最大利益。
Java
public class Solution { public int maxProfit(int prices[]) { int minprice = Integer.MAX_VALUE; int maxprofit = 0; for (int i = 0; i < prices.length; i++) { if (prices[i] < minprice) minprice = prices[i]; else if (prices[i] - minprice > maxprofit) maxprofit = prices[i] - minprice; } return maxprofit; }}
Complexity Analysis
Time complexity : O(n). Only a single pass is needed.
Space complexity : O(1). Only two variables are used.
阅读全文
0 0
- LeetCode 121. Best Time to Buy and Sell Stock
- [Leetcode] 121. Best Time to Buy and Sell Stock
- [leetcode] 121. Best Time to Buy and Sell Stock
- 【leetcode】121. Best Time to Buy and Sell Stock
- [leetcode] 121. Best Time to Buy and Sell Stock
- 121. Best Time to Buy and Sell Stock LeetCode
- [LeetCode]121. Best Time to Buy and Sell Stock
- Leetcode 121. Best Time to Buy and Sell Stock
- leetcode 121. Best Time to Buy and Sell Stock
- LeetCode 121. Best Time to Buy and Sell Stock
- LeetCode题解:121. Best Time to Buy and Sell Stock
- LeetCode *** 121. Best Time to Buy and Sell Stock
- 【leetcode】121. Best Time to Buy and Sell Stock
- #leetcode#121. Best Time to Buy and Sell Stock
- LeetCode 121. Best Time to Buy and Sell Stock
- 121.[Leetcode]Best Time to Buy and Sell Stock
- leetcode 121. Best Time to Buy and Sell Stock
- Leetcode 121. Best Time to Buy and Sell Stock
- 那是一个夏天
- Luogu P1460 健康的荷斯坦奶牛 Healthy Holsteins
- 拼多多内推笔试二:数字字符串两个字符串相乘/大数相乘
- 将N的平方分解为连续奇数和
- 如何打造一个 Android 编译时注解框架
- leetcode 121. Best Time to Buy and Sell Stock
- activiti工程环境搭建和流程图创建
- 缩略图thumb_media_id的获取
- 队列的两种存储方式的介绍与实现(后续)
- Java基础白话文_SSH框架—作为初窥门径的Coder,用生活场景理解SSH框架
- git常用命令
- Spring实现job的几种方式
- java关键字
- HttpURLConnection 静态类调用