zoukankan      html  css  js  c++  java
  • Best Time to Buy and Sell Stock i

    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: 5
    
    max. 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: 0
    
    In this case, no transaction is done, i.e. max profit = 0

    只允许一次交易,算出最大利益。利益是卖的价格减去买的价格,卖在买后面。

    这个题目的变形出现过:一个数组,0<=a<b<=n。。。a,b是数组的两个下标,b在后面。求num[b]-num[a]的最大值。跟这个题是一个意思。

    依次遍历数组,每个元素跟它前面的最小值做差,会使得此元素的差值最大,然后找出最大差值就行。见代码。

    class Solution {
        public int maxProfit(int[] prices) {
            if(prices==null||prices.length<2) return 0;
            int maxProfit=0;
            int min=prices[0];
            for(int i=1;i<prices.length;i++){
                if(prices[i]-min>maxProfit)
                    maxProfit=prices[i]-min;
                if(min>prices[i])//找出当前元素前面的最小值,在一次遍历的时候就可以找出来了
                    min=prices[i];
            }
            
            return maxProfit;
        }
    }
    
    
  • 相关阅读:
    乌龟git
    CI的model层的操作
    排序算法
    linux安装教程
    linux命令Netstat
    linux压缩和解压缩
    标准库模块time,datetime
    为什么计算机时间和众多编程语言要从1970年1月1日开始算起
    模块和包的导入
    Python封装应用程序的最佳项目结构是什么?
  • 原文地址:https://www.cnblogs.com/xiaolovewei/p/8081371.html
Copyright © 2011-2022 走看看