Skip to content

Instantly share code, notes, and snippets.

@codytwinton
Created August 17, 2017 16:39
Show Gist options
  • Save codytwinton/86301d061fb712e20863492d581822b0 to your computer and use it in GitHub Desktop.
Save codytwinton/86301d061fb712e20863492d581822b0 to your computer and use it in GitHub Desktop.
Equilibrium Algorithm Answer in Swift 3
import Foundation
public func equilibriumIndex(_ A : inout [Int]) -> Int {
var rightSum = A.reduce(0, +)
var leftSum = 0
for (index, element) in A.enumerated() {
rightSum -= element
guard rightSum != leftSum else { return index }
leftSum += element
}
return -1
}
public func allEquilibriumIndexs(_ A : inout [Int]) -> [Int] {
var all: [Int] = []
var rightSum = A.reduce(0, +)
var leftSum = 0
for (index, element) in A.enumerated() {
rightSum -= element
if rightSum == leftSum {
all.append(index)
}
leftSum += element
}
return all
}
var test0 = [-1, 3, -4, 5, 1, -6, 2, 1]
var test1 = [-7, 1, 5, 2, -4, 3, 0]
var test2 = [-156, 138, -2, -156, 138, -156, -2]
for var test in [test0, test1, test2] {
print("solution \(equilibriumIndex(&test))")
print("allSolutions \(allEquilibriumIndexs(&test))")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment