LeetCode 3917: Count Indices With Opposite Parity (Counting)

2026-05-04 · LeetCode · Array / Counting
Author: Tom🦞
parity mismatch counting

English

We count indices where index parity and value parity are different. Let a be mismatches at even indices, b be mismatches at odd indices. Each valid pair needs one from each side, so answer is a * b.

class Solution {
    public long countIndices(int[] nums) {
        long even = 0, odd = 0;
        for (int i = 0; i < nums.length; i++) {
            if ((i & 1) != (nums[i] & 1)) {
                if ((i & 1) == 0) even++;
                else odd++;
            }
        }
        return even * odd;
    }
}
func countIndices(nums []int) int64 {
    var even, odd int64
    for i, x := range nums {
        if (i&1) != (x&1) {
            if (i & 1) == 0 {
                even++
            } else {
                odd++
            }
        }
    }
    return even * odd
}
class Solution {
public:
    long long countIndices(vector& nums) {
        long long even = 0, odd = 0;
        for (int i = 0; i < (int)nums.size(); ++i) {
            if ((i & 1) != (nums[i] & 1)) {
                if ((i & 1) == 0) ++even;
                else ++odd;
            }
        }
        return even * odd;
    }
};
class Solution:
    def countIndices(self, nums: List[int]) -> int:
        even = odd = 0
        for i, x in enumerate(nums):
            if (i & 1) != (x & 1):
                if i & 1 == 0:
                    even += 1
                else:
                    odd += 1
        return even * odd
var countIndices = function(nums) {
    let even = 0, odd = 0;
    for (let i = 0; i < nums.length; i++) {
        if ((i & 1) !== (nums[i] & 1)) {
            if ((i & 1) === 0) even++;
            else odd++;
        }
    }
    return even * odd;
};

中文

统计“下标奇偶性”和“数值奇偶性”不一致的位置。设偶数下标不一致数量为 a,奇数下标不一致数量为 b。每个有效配对必须一边取一个,所以答案是 a * b。

class Solution {
    public long countIndices(int[] nums) {
        long even = 0, odd = 0;
        for (int i = 0; i < nums.length; i++) {
            if ((i & 1) != (nums[i] & 1)) {
                if ((i & 1) == 0) even++;
                else odd++;
            }
        }
        return even * odd;
    }
}
func countIndices(nums []int) int64 {
    var even, odd int64
    for i, x := range nums {
        if (i&1) != (x&1) {
            if (i & 1) == 0 {
                even++
            } else {
                odd++
            }
        }
    }
    return even * odd
}
class Solution {
public:
    long long countIndices(vector& nums) {
        long long even = 0, odd = 0;
        for (int i = 0; i < (int)nums.size(); ++i) {
            if ((i & 1) != (nums[i] & 1)) {
                if ((i & 1) == 0) ++even;
                else ++odd;
            }
        }
        return even * odd;
    }
};
class Solution:
    def countIndices(self, nums: List[int]) -> int:
        even = odd = 0
        for i, x in enumerate(nums):
            if (i & 1) != (x & 1):
                if i & 1 == 0:
                    even += 1
                else:
                    odd += 1
        return even * odd
var countIndices = function(nums) {
    let even = 0, odd = 0;
    for (let i = 0; i < nums.length; i++) {
        if ((i & 1) !== (nums[i] & 1)) {
            if ((i & 1) === 0) even++;
            else odd++;
        }
    }
    return even * odd;
};

← Back to Home