力扣刷题121.买卖股票的最佳时机

力扣刷题121.买卖股票的最佳时机_第1张图片
方法一
需要进行的是对于数组进行循环遍历,要求找出两个数字之间的最大差值,另外还要求后面的数要大于前面的数。

class solution{
    public int maxProfit(int[] arr){
        int maxProfit = 0;
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = i+1; j < arr.length; j++) {
                int nums = arr[j] - arr[i];
                if (nums>maxProfit){
                    maxProfit = nums;
                }
            }
        }
        return maxProfit;
    }
}

此种情况下,时间复杂度为o(n2),空间复杂度为o(1)。时间会超时。

方法二
用一个变量来记录最低的价格minprice ,在第 i 天卖出股票能得到的利润就是 prices[i] - minprice 。

class solution{
    public int maxProfit(int[] arr){
        int minprice = Integer.MAX_VALUE;
        int maxProfit = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]<minprice){
                minprice = arr[i];
            }else if ((arr[i]-minprice) >maxProfit){
                maxProfit = arr[i] - minprice;
            }
        }
        return maxProfit;
    }
}

你可能感兴趣的:(leetcode刷题,leetcode,算法,排序算法)