华为OD机试真题 - 最大股票收益

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String[] prices = in.nextLine().split(" ");
        int[] pricesTemp = changeToRMB(prices);
        System.out.println(getResult(pricesTemp));
    }

    public static int getResult(int[] prices) {
        int sum = 0;
        int price = 0;
        for (int i = 0; i < prices.length; i++) {
            if (isPeak(prices, i) &amp;&amp; price != 0)
                sum += prices[i] - price;
            if (isValley(prices, i))
                price = prices[i];
        }
        return sum;
    }

    public static int[] changeToRMB(String[] prices) {
        int[] pricesTemp = new int[prices.length];
        for (int i = 0; i < prices.length; i++) {
            if (prices[i].endsWith(&quot;Y&quot;))
                pricesTemp[i] = Integer.parseInt(prices[i].substring(0, prices[i].length() - 1));
            else
                pricesTemp[i] = Integer.parseInt(prices[i].substring(0, prices[i].length() - 1)) * 7;
        }
        return pricesTemp;
    }

    public static boolean isPeak(int[] prices, int i) {
        if (i == 0 &amp;&amp; prices[i + 1] < prices[i])
            return true;
        else if (i == 0)
            return false;
        if (i == prices.length - 1 &amp;&amp; prices[i - 1] < prices[i])
            return true;
        else if (i == prices.length - 1)
            return false;
        if (prices[i - 1] < prices[i] &amp;&amp; prices[i + 1] < prices[i])
            return true;
        return false;
    }

    public static boolean isValley(int[] prices, int i) {
        if (i == 0 &amp;&amp; prices[i + 1] > prices[i])
            return true;
        else if (i == 0)
            return false;
        if (i == prices.length - 1 &amp;&amp; prices[i - 1] > prices[i])
            return true;
        else if (i == prices.length - 1)
            return false;
        if (prices[i - 1] > prices[i] &amp;&amp; prices[i + 1] > prices[i])
            return true;
        return false;
    }
全部评论

相关推荐

测试糕手手:社会第一课,随便吹牛逼,直接说四个月,别老实。老实人只会被欺负
点赞 评论 收藏
分享
07-07 14:30
复旦大学 Java
遇到这种人我也不知道说啥了
正义执行官:人家能回你就不错了,自己不主动去问,等着天上掉馅饼,想啥呢哥们
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 14:45
bg是二本双一流硕,目标是Java后端开发岗,投暑期实习0大厂面试,只有极少的大厂测开,可能投的晚加上简历太烂加上0实习?求大佬们给个建议
程序员小白条:别去小厂,初创或者外包,尽量去中小,100-499和500-999,专门做互联网产品的,有公司自研的平台和封装的工具等等,去学习一些业务相关的,比如抽奖,积分兑换,SSO认证,风控,零售等等,目标 Java 后端开发吗?你要不考虑直接走大厂测开?如果技术不行的话,有面试你也很难过的
实习,不懂就问
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务