前端面试题:企业面试真题—5
2020-08-19 10:42
591 查看
股票最大利润
假设有一个数组, 它的第i个元素对应第i天的价格
最多只允许完成一次交易(买进一次,卖出一次)
设计一个算法找出最大利润
例如: [7,1,5,3,6,4] 最大利润 5
[code]function maxIncome(prices) { var 收益值 = 0; var 买入时间 = 0; var 最大收益 = 0; for(var i = 1; i < prices.length; i++) { //假设我们从第一天买入,收益为0, 循环从1开始,第二天计算收益 //当前收益值 收益值 = prices[i]-prices[买入时间]; //若当前收益出现负数或0,则意味着有比买入价更低的价格出现 //我们开始计算下一个买入时间点 if(收益值<=0) 买入时间=i; //每次都将更大的收益保留 //若没有出现更大的收益,则不做更新 //最终,最大收益会被保留下来 if(收益值>=最大收益) 最大收益=收益值; /* 唯一不足之处,是不太容易记录买入和卖出时机。 */ } return 最大收益; } console.log( maxIncome([7,1,5,3,6,4]) );
如果这个计算方法你不是非常能理解, 我们再来换一个简单一点的思路
[code]function maxIncome(prices) { var 最大收益 = 0; for(var i = 0; i < prices.length-1; i++) { for(var j = i+1; j < prices.length; j++) { //就是穷举每个买入及卖出的差价 var 收益值 = prices[j] - prices[i]; if(收益值>=最大收益) 最大收益 = 收益值; } } return 最大收益; } console.log( maxIncome([7,1,5,3,6,4]) );
这个思路虽然简单, 但浪费了很多计算次数
优化改良之后, 就是开头的版本了
相关文章推荐
- 前端面试题:企业面试真题—3
- 前端面试题:企业面试真题—2
- 前端面试题:企业面试真题—1
- 前端面试题:企业面试真题—6
- 前端面试题:企业面试真题—7
- .NET面试题大全,包括微软、华为、中兴等大企业的面试真题
- 大数据开发面试题-企业面试真题【连载】
- NET面试题大全,包括微软、华为、中兴等大企业的面试真题(连载)
- 前端面试:精选经典面试题(二十四)
- 前端面试:精选经典面试题(三)
- 前端面试:精选经典面试题(三十一)
- 前端面试题 + 面试翻车原因分析
- 2019前端面试系列——Vue面试题
- WEB前端开发 辨析类 面试真题 大集锦
- 亲历腾讯WEB前端开发三轮面试经历及面试题
- 来自企业中的真实面试真题(选择)
- 前端面试】前端面试题300道~~熬夜吐血整理
- 前端面试:精选经典面试题(二)
- 前端面试:精选经典面试题(七)
- 【面试】常见的前端面试题(1)