• Codility---MaxProfit


    Task description

    A zero-indexed array A consisting of N integers is given. It contains daily prices of a stock share for a period of N consecutive days. If a single share was bought on day P and sold on day Q, where 0 ≤ P ≤ Q < N, then the profit of such transaction is equal to A[Q] − A[P], provided that A[Q] ≥ A[P]. Otherwise, the transaction brings loss of A[P] − A[Q].

    For example, consider the following array A consisting of six elements such that:

    A[0] = 23171 A[1] = 21011 A[2] = 21123 A[3] = 21366 A[4] = 21013 A[5] = 21367

    If a share was bought on day 0 and sold on day 2, a loss of 2048 would occur because A[2] − A[0] = 21123 − 23171 = −2048. If a share was bought on day 4 and sold on day 5, a profit of 354 would occur because A[5] − A[4] = 21367 − 21013 = 354. Maximum possible profit was 356. It would occur if a share was bought on day 1 and sold on day 5.

    Write a function,

    class Solution { public int solution(int[] A); }

    that, given a zero-indexed array A consisting of N integers containing daily prices of a stock share for a period of N consecutive days, returns the maximum possible profit from one transaction during this period. The function should return 0 if it was impossible to gain any profit.

    For example, given array A consisting of six elements such that:

    A[0] = 23171 A[1] = 21011 A[2] = 21123 A[3] = 21366 A[4] = 21013 A[5] = 21367

    the function should return 356, as explained above.

    Assume that:

    • N is an integer within the range [0..400,000];
    • each element of array A is an integer within the range [0..200,000].

    Complexity:

    • expected worst-case time complexity is O(N);
    • expected worst-case space complexity is O(1), beyond input storage (not counting the storage required for input arguments).

    Elements of input arrays can be modified.

    Solution
     
    Programming language used: Java
    Total time used: 12 minutes
     
    Code: 03:24:03 UTC, java, final, score:  100
    // you can also use imports, for example:
    // import java.util.*;
    
    // you can write to stdout for debugging purposes, e.g.
    // System.out.println("this is a debug message");
    import java.lang.Math;
    class Solution {
        public int solution(int[] A) {
            // write your code in Java SE 8
            if(A.length == 0)
                return 0;
            int fmin = A[0], profit = 0;
            for(int i = 1; i < A.length; i++) {
                fmin = Math.min(fmin,A[i-1]);
                profit = Math.max(profit,A[i] - fmin);
            }
            return profit;
        }
    }


    https://codility.com/demo/results/trainingX49Y72-U4Z/
     
     
  • 相关阅读:
    AppiumForWin安装
    AppiumForMac安装2
    AppiumForMac安装1
    在MacOS安装puppeteer
    puppeteerExamples
    为什么总有target=_blank?
    Canvas 与 SVG
    HTML5+CSS3兼容收藏夹
    html 5 读取本地文件API
    【Web Audio API】 — 那些年的 web audio
  • 原文地址:https://www.cnblogs.com/samo/p/6984644.html
Copyright © 2020-2023  润新知