zoukankan      html  css  js  c++  java
  • [LeetCode] 121. 买卖股票的最佳时机

    这个题本质就是要求某个数与其右边最大的数的差值,这符合了单调栈的应用场景 当你需要高效率查询某个位置左右两侧比他大(或小)的数的位置的时候,于是就用单调栈解决

    官方答案给的一个贪心的算法:

    public class L121 {
        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;
        }
    }

    方法二:

    class Solution {
        public int maxProfit(int[] prices) {
            int max =0;
            if(prices.length<1){
                return max;
            }
            int min =prices[0];
            
            for(int i=1;i<prices.length;i++){
                if(prices[i]-min>max){
                    max =prices[i]-min;
                }
                if(prices[i]<min){
                    min = prices[i];
                }
            }
            return max;
        }
    }

  • 相关阅读:
    Java SE——线程介绍
    Vue
    Spring asm
    spring 自定义标签的实现
    Spring InitializingBean 接口以及Aware接口实现的原理
    值传递与引用传递
    redis学习
    ssm多数据源配置
    redis 启动
    json的设置
  • 原文地址:https://www.cnblogs.com/doyi111/p/12667348.html
Copyright © 2011-2022 走看看