我正在处理一个leet代码问题,下面的说明如下:
您将得到一个数组价格,其中价格是第一个交易日的给定股票的价格。
你想要最大化你的利润,选择一个单一的日子购买一只股票,并选择一个不同的日期在未来出售该股票。
返回您可以从这一交易中获得的最大利润。如果无法实现任何利润,则返回0。
在下面的代码中,我希望只在数组的索引0中删除最大号。在检查调试器时,我看到除了索引0之外,整个数组都被删除了。为什么拼接不像预期的那样起作用?
调试器显示了什么?
var maxProfit = function (prices) {
let theMin = Math.min(...prices)
let minPosition = prices.indexOf(theMin)
let theMax = Math.max(...prices)
let maxPosition = prices.lastIndexOf(theMax)
if (maxPosition === 0) {
prices = prices.splice(0, 1)
if (prices.length === 0) {
return 0
}
maxProfit(prices)
}
return theMax - theMin
};
发布于 2022-07-05 19:02:36
splice
不返回经过修改的数组副本。数组被就地修改,返回的是已删除的子数组(如果有的话).
实际上,您的代码是:
const deletedElements = prices.splice(0, 1);
prices = deletedElements;
您从数组中删除了第一个元素,然后将该数组替换为另一个只包含第一个元素的数组。因此,并不是像您所声称的那样,只返回第一个元素。splice
的工作与文档完全相同。
而且,prices.splice(0, 1)
更容易理解为prices.shift()
。
https://stackoverflow.com/questions/72877482
复制相似问题