竞赛
考级
看了一下,目前题解都是 O(nk)O(nk)O(nk) 的,我也不知道为什么能过。 由于题目并没有说要输出数组,那么不妨考虑一种思路: O(n)O(n)O(n) 遍历数组,如果遍历到 aia_iai 是 111,就让 iii 往前跳 kkk 个位置。 最坏时间复杂度:O(n)O(n)O(n) 代码实现起来就简单了 100pts100pts100pts
算法思路: 这是一个贪心算法问题。目标是用最少的操作次数覆盖所有值为1的位置。每次遇到未被覆盖的1时,就从该位置开始进行一次操作,覆盖接下来的k个位置,这样可以最大化每次操作的效益。 时间复杂度:O(n) 空间复杂度:O(n) 代码演示:
提交答案之后,这里将显示提交结果~