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 是平衡数组的方案数。
解题思路:
题目要求删除一个元素后,奇数下标元素之和同偶数下标元素之和一样,可以先统计原函数的奇数下标之和和偶数下标之和记为odd1和even1,然后统计删除元素一个元素后的奇数下标之和和偶数下标之和分别记为odd2和even2。判断odd1+even2和odd2+even1是否相等,如果相等res++,最后返回res。
class Solution {
public int waysToMakeFair(int[] nums) {
int len=nums.length;
int even1=0,odd1=0,even2=0,odd2=0;
for(int i=0;i<len;i++){
if(i%2==0){
even1+=nums[i];
}
else{
odd1+=nums[i];
}
}
int res=0;
for(int i=0;i<len;i++){
if(i%2==0){
even2+=nums[i];
}
else{
odd2+=nums[i];
}
if(odd1+even2==odd2+even1){
res++;
}
if(i%2==0){
even1-=nums[i];
}
else{
odd1-=nums[i];
}
}
return res;
}
}