开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情
刷题的日常-2023年2月10号
一天一题,保持脑子清爽
生成平衡数组的方案数
来自leetcode的 1664 题,题意如下:
给你一个整数数组
nums。你需要选择 恰好 一个下标(下标从 0 开始)并删除对应的元素。请注意剩下元素的下标可能会因为删除操作而发生改变。比方说,如果
nums = [6,1,7,4,1],那么:
- 选择删除下标
1,剩下的数组为nums = [6,7,4,1]。- 选择删除下标
2,剩下的数组为nums = [6,1,4,1]。- 选择删除下标
4,剩下的数组为nums = [6,1,7,4]。 如果一个数组满足奇数下标元素的和与偶数下标元素的和相等,该数组就是一个 平衡数组 。请你返回删除操作后,剩下的数组 nums 是 平衡数组 的 方案数 。
理解题意
通过题意,我们可以将信息整理如下:
- 题目给出一个数组
- 然后要求我们删除其中一个数,使得删除后的数组里,奇数下标的和 与 偶数下标的和相等
- 返回能够删除的原数组元素个数
做题思路
题目要求我们删除一个元素之后求 删除之后 奇偶位置的和一致。那么我们可以先算出原数组奇偶和元素的总和。再来看看删除后的数组,从删除位置开始往后,奇偶位置其实就和原数组相反了,这时只需要调换一下原数组在删除元素之后的奇偶和就可以了。步骤如下:
- 首先计算原数组的奇偶和
- 然后从前往后扫描数组
- 去除当前数,将后续的奇偶和调换顺序加上当前扫描得出的奇偶和
- 如果奇偶和相同,结果加一
- 返回最终结果
代码实现
代码实现如下: