zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    关于jquery
    3D转换(位置)+过渡+透视
    浅谈相对定位与绝对定位
    多层菜单
    菜单栏
    轮播图
    jsp中表格序号递增,varStatus="vs"
    关于数据库的增删改查
    put请求(单整体改),patch请求(群单改,群改)
    ModelSerializer 序列化和反序列化,及序列化整合,单删/增,群删/增(delete请求)
  • 原文地址:https://www.cnblogs.com/erdanyang/p/11475103.html
Copyright © 2011-2022 走看看