1664.生成平衡数组的方案数
链接:1664.生成平衡数组的方案数
难度:Medium
标签:数组、前缀和
简介:如果一个数组满足奇数下标元素的和与偶数下标元素的和相等,该数组就是一个 平衡数组 。请你返回删除操作后,剩下的数组 nums 是 平衡数组 的 方案数 。
题解 1 - rust
- 编辑时间:2023-01-28
- 执行用时:8ms
- 内存消耗:2.5MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
    pub fn ways_to_make_fair(nums: Vec<i32>) -> i32 {
        let mut l = [0; 2];
        let mut r = [0; 2];
        let mut ans = 0;
        for i in 0..nums.len() {
            r[i % 2] += nums[i];
        }
        for i in 0..nums.len() {
            r[i % 2] -= nums[i];
            if l[0] + r[1] == l[1] + r[0] {
                ans += 1;
            }
            l[i % 2] += nums[i];
        }
        ans
    }
}
题解 2 - cpp
- 编辑时间:2023-01-28
- 执行用时:108ms
- 内存消耗:92MB
- 编程语言:cpp
- 解法介绍:遍历。
class Solution {
public:
    int waysToMakeFair(vector<int>& nums) {
        int l[2] = {0}, r[2] = {0}, ans = 0;
        for (int i = 0; i < nums.size(); i++) r[i % 2] += nums[i];
        for (int i = 0; i < nums.size(); i++) {
            r[i % 2] -= nums[i];
            if (l[0] + r[1] == l[1] + r[0]) ans++;
            l[i % 2] += nums[i];
        }
        return ans;
    }
};
题解 3 - python
- 编辑时间:2023-01-28
- 执行用时:328ms
- 内存消耗:19.7MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
def waysToMakeFair(self, nums: List[int]) -> int:
    l = [0] * 2
    r = [0] * 2
    ans = 0
    for i, num in enumerate(nums):
        r[i % 2] += num
    for i, num in enumerate(nums):
        r[i % 2] -= num
        if l[0] + r[1] == l[1] + r[0]:
            ans += 1
        l[i % 2] += num
    return ans