题目链接:https://leetcode-cn.com/problems/maximum-difference-between-increasing-elements/

前言:基础题。

一. 函数学习

Math.max()和Math.min()中的参数同时支持double, float, int, long多种类型。

System.out.println(Math.max(12.123, 18.456));      
System.out.println(Math.max(23.12, 23.0));  

二. 题解思路

抛开最简单的暴力法不谈,我们想要找到能取得最大差值的数对,而对于每个数对(nums[i], nums[j])中的 nums[i]而言,对应的 nums[j] 必然是坐标 i 左侧的最小值,因此可以边遍历边维护最小值min ,将复杂度降到O(n)。

三. 心得

知道有更简单的方法,但是想了半天也没想到,最后为了省事还是用了暴力法。

其实这种所谓的“维护法”,是逆向思维,和暴力法的固定住nums[i]不同,它固定了nums[j],利用我们对于已经遍历过的部分所维护的最小值min,省略了遍历与之对应的nums[i]的步骤,大大降低了时间复杂度。

本人还是很菜,共勉。

posted on 2022-02-26 20:47  SelmaS  阅读(36)  评论(0)    收藏  举报