1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-11 02:58:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/环形闯关游戏 [K8GULz].md

48 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

「力扣挑战赛」中有一个由 `N` 个关卡组成的**环形**闯关游戏,关卡编号为 `0`~`N-1`,编号 `0` 的关卡和编号 `N-1` 的关卡相邻。每个关卡均有积分要求,`challenge[i]` 表示挑战编号 `i` 的关卡最少需要拥有的积分。
![图片.png](https://pic.leetcode-cn.com/1630392170-ucncVS-%E5%9B%BE%E7%89%87.png){:width="240px"}
小扣想要挑战关卡,闯关具体规则如下:
- 初始小扣可以指定其中一个关卡为「开启」状态,其余关卡将处于「未开启」状态。
- 小扣可以挑战处于「开启」状态且**满足最少积分要求**的关卡,若小扣挑战该关卡前积分为 `score`,挑战结束后,积分将增长为 `score|challenge[i]`(即位运算中的 `"OR"` 运算)
- 在挑战某个关卡后,该关卡两侧相邻的关卡将会开启(若之前未开启)
请帮助小扣进行计算,初始最少需要多少积分,可以挑战 **环形闯关游戏** 的所有关卡。
**示例1**
> 输入:`challenge = [5,4,6,2,7]`
>
> 输出:`4`
>
> 解释: 初始选择编号 3 的关卡开启,积分为 4
>挑战编号 3 的关卡,积分变为 $4 | 2 = 6$,开启 2、4 处的关卡
>挑战编号 2 的关卡,积分变为 $6 | 6 = 6$,开启 1 处的关卡
>挑战编号 1 的关卡,积分变为 $6 | 4 = 6$,开启 0 处的关卡
>挑战编号 0 的关卡,积分变为 $6 | 5 = 7$
>挑战编号 4 的关卡,顺利完成全部的关卡
**示例2**
> 输入:`challenge = [12,7,11,3,9]`
>
> 输出:`8`
>
> 解释: 初始选择编号 3 的关卡开启,积分为 8
>挑战编号 3 的关卡,积分变为 $8 | 3 = 11$,开启 2、4 处的关卡
>挑战编号 2 的关卡,积分变为 $11 | 11 = 11$,开启 1 处的关卡
>挑战编号 4 的关卡,积分变为 $11 | 9 = 11$,开启 0 处的关卡
>挑战编号 1 的关卡,积分变为 $11 | 7 = 15$
>挑战编号 0 的关卡,顺利完成全部的关卡
**示例3**
> 输入:`challenge = [1,1,1]`
>
> 输出:`1`
**提示:**
- `1 <= challenge.length <= 5*10^4`
- `1 <= challenge[i] <= 10^14`