给你一个下标从0开始的整数数组nums,该数组的大小为n,请你计算nums[j] - nums[i]能求得的最大差值,其中0 <= i < j < nnums[i] < nums[j]

返回最大差值。如果不存在满足要求的ij,返回-1

示例 1:

输入:nums = [7,1,5,4]
输出:4
解释:
最大差值出现在 i = 1 且 j = 2 时,nums[j] - nums[i] = 5 - 1 = 4 。
注意,尽管 i = 1 且 j = 0 时 ,nums[j] - nums[i] = 7 - 1 = 6 > 4 ,但 i > j 不满足题面要求,所以 6 不是有效的答案。

示例 2:

输入:nums = [9,4,3,2]
输出:-1
解释:
不存在同时满足 i < j 和 nums[i] < nums[j] 这两个条件的 i, j 组合。

示例 3:

输入:nums = [1,5,2,10]
输出:9
解释:
最大差值出现在 i = 0 且 j = 3 时,nums[j] - nums[i] = 10 - 1 = 9 。

提示:

  • n == nums.length
  • 2 <= n <= 1000
  • 1 <= nums[i] <= 10^9
  1. 暴力
    Python:

    class Solution:
    def maximumDifference(self, nums: List[int]) -> int:
        value = 0
        for i in range(len(nums)):
            for j in range(i+1, len(nums)):
                if nums[j] > nums[i]:
                    value = max(value, nums[j]-nums[i])
        return value if value != 0 else -1

    Java:

    class Solution {
    public int maximumDifference(int[] nums) {
        int value = 0;
        for(int i = 0; i < nums.length; i++)
        {
            for(int j = i+1; j < nums.length; j++)
            {
                int temp = nums[j] - nums[i];
                if(temp > value)
                {
                    value = temp;
                }
            }
        }
        if(value == 0)
            return -1;
        else
            return value;
    }
    }
  2. 记录最小值
    python:

    class Solution:
    def maximumDifference(self, nums: List[int]) -> int:
        res_value = 0
        min_value = nums[0]
        for num in nums:
            if num < min_value:
                min_value = num
            if num-min_value > res_value:
                res_value = num-min_value
        return res_value if res_value else -1

    java:

    class Solution {
    public int maximumDifference(int[] nums) {
        int res = 0;
        int min = nums[0];
        for(int num: nums)
        {
            if(num < min)
                min = num;
            if(num - min > res)
                res = num - min;
        }
        return res != 0?res:-1;
    }
    }
最后修改日期: 2021年12月31日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。