给你一个长度为偶数 n 的整数数组 nums。
nums 的一次 循环移位 可以通过以下方式得到:选择 nums 的一个长度在 0 到 n - 1(包含两端)之间的 前缀 ,并将其移动到数组末尾,同时保持所有元素的相对顺序不变。
如果一次循环移位后的数组中,前 n / 2 个元素之和 严格大于 后 n / 2 个元素之和,则称该循环移位是 好循环移位 。
返回 nums 中好循环移位的数量。
数组的 前缀 是指从数组开头开始,并延伸到数组中某个位置的子数组。
子数组 是数组中一段连续的元素序列,可以为空。
示例 1:
输入: nums = [1,2,3,4,5,6]
输出: 3
解释:
nums 的所有循环移位如下:
| 循环移位 | 前 n / 2 个元素之和 | 后 n / 2 个元素之和 |
|---|---|---|
[1, 2, 3, 4, 5, 6] | 1 + 2 + 3 = 6 | 4 + 5 + 6 = 15 |
[2, 3, 4, 5, 6, 1] | 2 + 3 + 4 = 9 | 5 + 6 + 1 = 12 |
[3, 4, 5, 6, 1, 2] | 3 + 4 + 5 = 12 | 6 + 1 + 2 = 9 |
[4, 5, 6, 1, 2, 3] | 4 + 5 + 6 = 15 | 1 + 2 + 3 = 6 |
[5, 6, 1, 2, 3, 4] | 5 + 6 + 1 = 12 | 2 + 3 + 4 = 9 |
[6, 1, 2, 3, 4, 5] | 6 + 1 + 2 = 9 | 3 + 4 + 5 = 12 |
共有 3 种循环移位满足前半部分元素之和大于后半部分元素之和。因此,答案为 3。
示例 2:
输入: nums = [1,2,1,2]
输出: 0
解释:
nums 的所有循环移位如下:
| 循环移位 | 前 n / 2 个元素之和 | 后 n / 2 个元素之和 |
|---|---|---|
[1, 2, 1, 2] | 1 + 2 = 3 | 1 + 2 = 3 |
[2, 1, 2, 1] | 2 + 1 = 3 | 2 + 1 = 3 |
[1, 2, 1, 2] | 1 + 2 = 3 | 1 + 2 = 3 |
[2, 1, 2, 1] | 2 + 1 = 3 | 2 + 1 = 3 |
对于每一种循环移位,前半部分和后半部分的元素之和都相等,因此不存在好循环移位。因此,答案为 0。
提示:
2 <= n == nums.length <= 1051 <= nums[i] <= 109n 为偶数。