- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定一个数组 [a1 To an],我们必须构造另一个数组 [b1 To bn],其中 bi = a1*a2*…*an/ai
.您只能使用常量空间,时间复杂度为 O(n)。不允许分割。
解决方案的逻辑很简单,从产品中去除bi即可得到结果。然而,当我处理解决这个问题时,我发现自己被困住了。以下是我的疑惑:
根据我的理解,这里的常量空间意味着尽管数组的长度是固定的,但我可以使用的变量数量必须是固定的。其中禁止创建新数组来解决问题。因为在处理不同的数组时,创建新数组会使变量的数量不同。
我已经在网上搜索了大多数解决方案,但是我能找到的所有解决方案都创建了新的数组。
那么,我在这里错过了什么吗?有什么想法吗?非常感谢!
最佳答案
我将使用从 0 到 N-1 的数组索引,因为这就是我们在幕后做事的方式。
你可以像这样重写 bi 的方程:bi = (a0×a1×⋯×ai-1) × (ai+1×ai+2×⋯×an-1),或者更简洁地像这样:bi = (∏ j=0⋯i-1 aj) × (∏j=i+1⋯n-1 aj)。
(如果您不熟悉它,∏ 类似于 ∑,但它是将项相乘而不是相加。此外,这些公式与您问题中的公式并不完全相同,因为根据您问题中的公式,如果 ai 为零,则 bi 未定义。但是,我将假设意图是取消分子和分母中的 ai,即使它为零。)
反正 ,您可以通过从 0 到 n-1 遍历数组 a 来逐步计算左子积 (∏j=0⋯i-1 aj)。您可以通过从 n-1 到 0 遍历数组 a 来计算正确的子产品 (∏j=i+1⋯n-1 aj)。
因此,解决方案是使用两次传递。
第一遍是从 0 到 N-1。设置每个b[i]
到 a[j]
的产品为 0 <= j < i
.此传递将 b 数组设置为左子产品。这需要 O(N) 时间和循环计数器的恒定空间。
第二遍是从N-1到0。更新每个b[i]
乘以 a[j]
的乘积为 i < j < N
.因此 pass 通过将每个元素乘以适当的右子积来更新 b 数组。这需要 O(N) 时间和恒定空间用于循环计数器和临时空间。
这是一个 Python 解决方案:
b[0] = 1
for i in range(1, N):
b[i] = b[i - 1] * a[i - 1]
# Now every b[i] is the product of the a[j] where 0 <= j < i.
t = 1
for i in range(N-1, -1, -1):
b[i] = b[i] * t
t *= a[i]
# Now every b[i] is the product of the a[j] where 0 <= j < i
# and the a[j] where i < j <= N-1. This is the desired output.
关于arrays - 数组 SDE 面试问题的恒定空间限制。 AND 对经典面试问题的疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19369961/
要求: 我们在数据库中有值 Chennai Baroda Bangalore New Delhi São Paulo, Lisboa San Jose 等... 所以我想将这些字符串转换成一个唯一的短
我需要通过 TCP 加密和发送数据(每条消息从几百字节到几百兆字节)以 block 从 Java 到 C++ 程序,并且需要发送的大小提前发送数据,以便收件人知道何时停止读取当前消息并处理它,然后等待
我不太知道如何问这个问题,因此我将其作为示例: 想象在一个应用程序中您有一个Country对象。此对象有两个属性:Name和'Bordering Countries'集合。稍后可能会添加更多属性,但这
我们正在尝试使用 IoT 中心、流分析和表存储来处理仪表板上的事件驱动图标(开/关/事件)。我无法让实际过程在 6 秒内完成。流分析的水印恒定为 5 秒。该网站声称即时处理。 https://azur
我正在尝试获取一个 JTabbedPane,其中所有选项卡(实际选项卡,而不是组件)具有相同的宽度(最宽标签所需的最小宽度或恒定宽度)。 我试图覆盖 BasicTabbedPaneUI.getTabB
你好安卓开发者, 我正在使用 OpenGLES 1.0 在 Eclipse 中为 Android 开发一个简单的游戏。我正在使用 Samsung Galaxy S2 Android(2.3) 作为开发
我正在尝试使用 ColorMatrix 为整个图像设置一个恒定的色调值。我的目标是使整个图像看起来颜色相同,而不会失去任何区域的亮度。我找到了一种使用 ColorMatrix 来移动图像的色调值的方法
我最近将我的 Postgres 数据库从 Windows 迁移到 CentOS 6.7。在 Windows 上,数据库从不使用太多 CPU,但在 Linux 上,我看到它使用恒定的 ~30% CPU(
你好,我正在用 SDL2 开发一款很棒的游戏,我添加了一个 FPS 调节器以使其在每台机器上都能流畅运行,但后来我创建了一个示例程序来输出 fps(不是调节,只是输出以查看电流的功率机器运行 ) 我在
我在 IntelliJ IDEA 13.0 中开发了一个应用程序,但是当我在我的设备上运行该应用程序时,它会不断等待调试器(如果我在 Debug模式下运行,调试器连接时没问题)但是如果远离计算机,我无
我想在 stat_密度2 图中绘制多个组,其中 alpha 值与每组中的观察计数相关。然而,由 stat_密度2d 形成的水平似乎已标准化为每组中的观察数量。例如, temp <- rbind(mov
我是一名优秀的程序员,十分优秀!