解題思路
雙層 for 循環(huán)將數組當前下標的左側和右側乘積算出來,再進行比較够吩,如果相等就將當前下標保存到數組中比然,最后取數組的最小值即可
// 數組的中心位置
func HW2023014() {
// 測試用例
// let line = "2 5 3 6 5 6"
// 開始代碼
let line = String(readLine()!)
let inputArr = line.components(separatedBy: " ").map { Int($0) ?? 0}
var resArr: [Int] = []
for (i, _) in inputArr.enumerated() {
if i==0 || i == inputArr.count-1 { // 第一個和最后一個一定不會有,所以直接跳過
continue
}
var lNum = 1 // 左側積初始值為1
var rNum = 1 // 右側積初始值為1
for (j, jNum) in inputArr.enumerated() {
if j < i {
lNum *= jNum // 累乘左側
}else if j > i {
if rNum > lNum { // 如果發(fā)現右側已經大于左側就提前結束循環(huán)節(jié)省時間
break
}
rNum *= jNum // 累乘右側
}
}
if lNum == rNum { //右側等于左側周循,將該下標保存到數組
resArr.append(i)
}
}
// 取出數組中最小的下標進行打印
if resArr.count > 0 {
resArr = resArr.sorted()
print(resArr.first!)
}
}