我有网网站建设,建设部执业资格注册中心网站,做it的网站有哪些,制作影视视频的软件假设把某股票的价格按照时间先后顺序存储在数组中#xff0c;请问买卖 一次 该股票可能获得的利润是多少#xff1f; 例如一只股票在某些时间节点的价格为 [9,11,8,5,7,12,16,14]。 如果我们能在价格为 5 的时候买入并在价格为 16 时卖出#xff0c;则能收获最大的利润 11。… 假设把某股票的价格按照时间先后顺序存储在数组中请问买卖 一次 该股票可能获得的利润是多少 例如一只股票在某些时间节点的价格为 [9,11,8,5,7,12,16,14]。 如果我们能在价格为 5 的时候买入并在价格为 16 时卖出则能收获最大的利润 11。 数据范围 输入数组长度 [0,500]。 样例: 输入[9, 11, 8, 5, 7, 12, 16, 14] 输出 11 解题思路 从正常现实生活中考虑我们买卖股票肯定想在最低价的时候将它买入在最高价的时候将其抛售。
为了获取最大利润用min变量记录前 i - 1 天股票的最低价。
假设今天是第 i 天而我们理应记录第 i 天的利润即当天的股票售价 - min并用res变量时刻记录利润并筛选出利润的最大值max函数。
这样最后的最大利润就是 res 。
理论成立代码如下
class Solution {public int maxDiff(int[] nums) {if(nums.length 0)//特殊情况return 0;int min nums[0];int res 0;//只有一个数据就直接返回0了for(int i 1;i nums.length; i ){res Math.max(res, nums[i] - min);min Math.min(min, nums[i]);//先更新利润再更新min}return res;}
}