文章来源:
https://blog.csdn.net/weixin_45630258/article/details/132737088
欢迎各位大佬指点、三连
1、题目:
给定一个整数数组 nums,找出给定数组中两个数字之间的最大差值。要求,第二个数字必须大于第一个数字。
2、分析特点:
求最大差值 ==> 最大值 - 最小值
- 只需要遍历价格数组一遍,记录历史最小值,非最小值的考虑是最大值。
4、复杂度分析:
- 时间复杂度:O(n),只需要遍历一次。
- 空间复杂度:O(1),只使用了常数个变量。
5、总结:
使用打擂台的思想,遍历的时候,考虑当前值是最小值,则记录最小值,否则考虑当前值是最大值,进行更新。
6、其他解法–暴力法
public int maxProfit(int[] nums) {
int maxNum = 0;
for (int i = 0; i < nums.length - 1; i++) {
for (int j = i + 1; j < nums.length; j++) {
int subValue = nums[j] - nums[i];
if (subValue > maxNum) {
maxNum = subValue;