【发布时间】:2018-08-01 00:39:44
【问题描述】:
我最近在一次采访中被问到这个问题,我仍然想不出一个解决方案。
有一个有 N 个插槽的花园。在每个插槽中,都有一朵花。 N 天,N 朵花会一一绽放。每一天,都会有一朵花开,从那时起它就处于盛开的状态。
给定一个数组flowers,由1到N的数字组成。数组中的每个数字代表当天花开的地方。
例如,flowers[i] = x 表示在第 i 天开花的唯一花将在位置 x,其中 i 和 x 将在 1 到 N 的范围内。
同样给定一个整数K和M,你需要输出最近哪一天有M个长度至少为K的开花组处于开花状态。
【问题讨论】:
-
您是否尝试过编写任何代码(或伪代码)?
-
嗨@CertainPerformance,我确实使用二叉索引树编写了代码,但我被困在如何确定是否在组中间插入了一些花,那么我如何才能确定它是长度至少为 K 的连续群。如果花是在末尾或开头添加的,那么很容易我们只需要检查 i、i+k+1 或 i 到 i-k-1 中的个数。但是,如果那朵花出现在序列的中间并形成长度为 k 的序列呢?
-
@CertainPerformance 请为此提供一些指导。谢谢
-
如果连续有
K+1开花,算不算2组长度K? -
@user3386109 不,它只是一组。
标签: algorithm