• leetcode(121-123)买股票的最佳时机


    1、

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

     2、

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

     3、

    class Solution {
            public int maxProfit(int[] prices) {
            int len = prices.length;
            int min;
            int max;
            int maxProfile = 0;
            int maxProfile1;
            int maxProfile2;
            List<Integer> list1 = new ArrayList<>();
            List<Integer> list2 = new ArrayList<>();
            List<Integer> profile1 = new ArrayList<>();
            int i=0;
            while(i<len-1){
                while(i<len-1&&prices[i]>=prices[i+1]) ++i;
                min = prices[i];
                while(i<len-1&&prices[i]<=prices[i+1]) ++i;
                max = prices[i];
                list1.add(min);
                list2.add(max);
            }
            int size = list1.size();
            if(size==0) {
                
            }else if(size==1){
                return list2.get(0) - list1.get(0);
            }else{
                min = list1.get(0);
                maxProfile1 = list2.get(0)-min;
                for(i=0;i<size-1;++i){
                    if(i>0){
                        min = Math.min(list1.get(i),min);
                        maxProfile1 = Math.max(list2.get(i)-min,maxProfile1);
                    }
                    profile1.add(maxProfile1);
                }
                max = list2.get(size-1);
                maxProfile2 = max-list1.get(size-1);
                for(i=size-1;i>0;--i){
                    if(i<size-1){
                        max = Math.max(max,list2.get(i));
                        maxProfile2 = Math.max(max-list1.get(i),maxProfile2);
                    }
                    maxProfile = Math.max(maxProfile, profile1.get(i-1)+maxProfile2);
                }
                
            }
            return maxProfile;
        }
    }
  • 相关阅读:
    python 学习笔记 数值型(1)
    python 学习笔记 标识符和变量(3)
    python 学习笔记 字符串(2)
    jsp+servlet+javaBean+Dao
    面试被问到岗时间,是越快越好吗?
    有赞多平台推广接入与测试
    HTTPS 加密、证书、签名与握手
    开发到底要不要自己做测试?
    我也曾找不到工作
    世界第三大浏览器正在消亡
  • 原文地址:https://www.cnblogs.com/erdanyang/p/11475103.html
Copyright © 2020-2023  润新知