Appearance
Balance Array
Problem Description
Given an integer array A of size N. You need to count the number of special elements in the given array.
A element is special if removal of that element make the array balanced.
Array will be balanced if sum of even index element equal to sum of odd index element.
Problem Constraints
1 <= N <= 10^5
1 <= A[i] <= 10^9
1 <= N <= 10^5
1 <= A[i] <= 10^9
Input Format
First and only argument is an integer array A of size N.
First and only argument is an integer array A of size N.
Output Format
Return an integer denoting the count of special elements.
Return an integer denoting the count of special elements.
Example Input
Input 1:
A = [2, 1, 6, 4]
Input 2:
A = [5, 5, 2, 5, 8]
Input 1:
A = [2, 1, 6, 4]
Input 2:
A = [5, 5, 2, 5, 8]
Example Output
Output 1:
1
Output 2:
2
Output 1:
1
Output 2:
2
Example Explanation
Explanation 1:
After deleting 1 from array : {2,6,4}
(2+4) = (6)
Hence 1 is the only special element, so count is 1
Explanation 2:
If we delete A[0] or A[1] , array will be balanced
(5+5) = (2+8)
So A[0] and A[1] are special elements, so count is 2.
Explanation 1:
After deleting 1 from array : {2,6,4}
(2+4) = (6)
Hence 1 is the only special element, so count is 1
Explanation 2:
If we delete A[0] or A[1] , array will be balanced
(5+5) = (2+8)
So A[0] and A[1] are special elements, so count is 2.
Solution
swift
import Foundation
class Solution {
func solve(_ A: inout [Int]) -> Int {
//(odd,even)
var left = [(Int,Int)](repeating:(0,0),count:A.count)
var right = [(Int,Int)](repeating:(0,0),count:A.count)
var odd = 0
var even = 0
for (i,v) in A.enumerated(){
if i%2 > 0 {
odd += v
} else {
even += v
}
left[i] = (odd,even)
}
odd = 0
even = 0
for i in (0..<A.count).reversed(){
if i%2 > 0 {
odd += A[i]
} else {
even += A[i]
}
right[i] = (odd,even)
}
var ret = 0
for i in (0..<A.count) {
var lo = 0
var le = 0
if (i-1) >= 0 {
(lo,le) = left[i-1]
}
var ro = 0
var re = 0
if (i+1) < A.count {
(ro,re) = right[i+1]
}
if (lo + re) == (le + ro) {
ret += 1
}
}
return ret
}
}
import Foundation
class Solution {
func solve(_ A: inout [Int]) -> Int {
//(odd,even)
var left = [(Int,Int)](repeating:(0,0),count:A.count)
var right = [(Int,Int)](repeating:(0,0),count:A.count)
var odd = 0
var even = 0
for (i,v) in A.enumerated(){
if i%2 > 0 {
odd += v
} else {
even += v
}
left[i] = (odd,even)
}
odd = 0
even = 0
for i in (0..<A.count).reversed(){
if i%2 > 0 {
odd += A[i]
} else {
even += A[i]
}
right[i] = (odd,even)
}
var ret = 0
for i in (0..<A.count) {
var lo = 0
var le = 0
if (i-1) >= 0 {
(lo,le) = left[i-1]
}
var ro = 0
var re = 0
if (i+1) < A.count {
(ro,re) = right[i+1]
}
if (lo + re) == (le + ro) {
ret += 1
}
}
return ret
}
}