您的位置:首页 > 职场人生

java编程面试——风口的猪-中国牛市

2016-10-29 15:39 155 查看
题目描述

风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<=100,0<=prices[i]<=100

输入例子:

3,8,5,1,7,8

输出例子:

12

/** * 计算你能获得的最大收益 * * @param prices Prices[i]即第i天的股价 * @return 整型 */

    public int
calculateMax(int[] prices) {

          int max=0;

          int a1=0;  

        // 只卖一次

               for(int i=0;i<=(prices.length-2);i++)

            {

                    a1=0;

                  for(int j=i+1;j<=(prices.length-1);j++)

                           {

                               if(prices[j]>a1)

                                   {

                                  a1= prices[j];

                               }

                       }

                    if(max<(a1-prices[i]))

                               {

                               max=a1-prices[i];

                           }

             }

                  //可以卖出两次,确定两个买进点的值,遍历两段间最大值,然后作差和保留值比较

        if(prices.length>=4)

            {

                        for(int i=0;i<=(prices.length-4);i++)

                {

                       for(int j=i+2;j<=(prices.length-2);j++)

                           {

                             int a2=0;

                             int a4=0;

                           for(int k=i+1;k<j;k++)

                           {

                               if(prices[k]>a2)

                                   {

                                  a2= prices[k];

                               }

                           }

                           for(int m=j+1;m<=(prices.length-1);m++)

                               {

                              if(prices[m]>a4)

                                  {

                                 a4= prices[m];

                              }

                           }

                           if(max<(a2+a4-prices[i]-prices[j]))

                               {

                               max=a2+a4-prices[i]-prices[j];

                           }

                       }

                }

        }

        return max;

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: