#1664
Medium Algorithms Ways to make a fair array
Array Prefix Sum
66.4% acceptance
Feb 25, 2026
1395
47
You are given an integer array nums. You can choose exactly one index and
remove the element. An array is fair if the sum of odd-indexed values equals
the sum of even-indexed values.
Return the number of indices you could choose such that after removal, nums is fair.
Solution
Rust
Time O(n)
Space O(1)
impl Solution {
pub fn ways_to_make_fair(nums: Vec<i32>) -> i32 {
let n = nums.len();
// Compute total even and odd indexed sums
let mut total_even = 0i32;
let mut total_odd = 0i32;
for (i, &v) in nums.iter().enumerate() {
if i % 2 == 0 { total_even += v; } else { total_odd += v; }
}
let mut left_even = 0i32;
let mut left_odd = 0i32;
let mut count = 0;
for i in 0..n {
// After removing index i:
// Elements before i keep their parity (left_even, left_odd)
// Elements after i have parity flipped:
// original even becomes odd and vice versa
let right_even = total_even - left_even - if i % 2 == 0 { nums[i] } else { 0 };
let right_odd = total_odd - left_odd - if i % 2 == 1 { nums[i] } else { 0 };
// New even sum = left_even + right_odd (original odd after i -> now even)
// New odd sum = left_odd + right_even
if left_even + right_odd == left_odd + right_even {
count += 1;
}
if i % 2 == 0 { left_even += nums[i]; } else { left_odd += nums[i]; }
}
count
}
}