zoukankan      html  css  js  c++  java
  • 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/
     
     
  • 相关阅读:
    Hibernate学习一----------Hibernate初实现
    Error executing DDL via JDBC Statement
    org.hibernate.MappingException:Unknown entity
    Struts2学习九----------处理结果类型(input)
    触发器-MySQL
    Struts2学习八----------接收参数
    Struts2学习七----------Struts2后缀
    Struts2学习六----------默认Action
    Struts2学习五----------指定多个配置文件
    Java 8 表示两个时间点距离
  • 原文地址:https://www.cnblogs.com/samo/p/6984644.html
Copyright © 2011-2022 走看看