首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么剪接要删除我的整个数组?如果max位于0位置,我只想删除它。

为什么剪接要删除我的整个数组?如果max位于0位置,我只想删除它。
EN

Stack Overflow用户
提问于 2022-07-06 02:57:05
回答 1查看 37关注 0票数 0

我正在处理一个leet代码问题,下面的说明如下:

您将得到一个数组价格,其中价格是第一个交易日的给定股票的价格。

你想要最大化你的利润,选择一个单一的日子购买一只股票,并选择一个不同的日期在未来出售该股票。

返回您可以从这一交易中获得的最大利润。如果无法实现任何利润,则返回0。

在下面的代码中,我希望只在数组的索引0中删除最大号。在检查调试器时,我看到除了索引0之外,整个数组都被删除了。为什么拼接不像预期的那样起作用?

调试器显示了什么?

代码语言:javascript
代码运行次数: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
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-06 03:02:36

splice不返回经过修改的数组副本。数组被就地修改,返回的是已删除的子数组(如果有的话).

实际上,您的代码是:

代码语言:javascript
代码运行次数:0
运行
复制
const deletedElements = prices.splice(0, 1);
prices = deletedElements;

您从数组中删除了第一个元素,然后将该数组替换为另一个只包含第一个元素的数组。因此,并不是像您所声称的那样,只返回第一个元素。splice的工作与文档完全相同。

而且,prices.splice(0, 1)更容易理解为prices.shift()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72877482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档