[Codility] 3. TapeEquilibrium
8856 ワード
[Codility] 3. TapeEquilibrium
質問リンク
TapeEquilibrium
問題の概要
整数Pは、|(A[0]+A[1]+.+A[P21])|として定義される.すなわち、整数Nが与えられると、配列にA[N]を含む左側要素の総和から、A[N]の右側にある要素値を減算した数の絶対値がPとなる.
可能なすべてのP(N)に対して最小値を求める.
要求
整数Nの範囲は
N is an integer within the range [2..100,000]
だから時間の間違いに注意しなければならない.
時間の複雑さはいつもパターンを手配する必要があるようです.
无知を缲り返すと、答えは见つからない.
やはり無知なコードはあり得ない.
いつも刺激的...
質問リンク
TapeEquilibrium
問題の概要
整数Pは、|(A[0]+A[1]+.+A[P21])|として定義される.すなわち、整数Nが与えられると、配列にA[N]を含む左側要素の総和から、A[N]の右側にある要素値を減算した数の絶対値がPとなる.
可能なすべてのP(N)に対して最小値を求める.
要求
整数Nの範囲は
N is an integer within the range [2..100,000]
だから時間の間違いに注意しなければならない.
時間の複雑さはいつもパターンを手配する必要があるようです.
无知を缲り返すと、答えは见つからない.
イニシャルコード
import Foundation
import Glibc
public func solution(_ A : inout [Int]) -> Int {
var arr = Int()
var arr2 = Int()
var num: Int = Int.max
if A.count < 3 {
return abs(A[0] - A[1])
}
for i in 1..<A.count {
A[0...i-1].forEach {
arr += $0
}
A[i..<A.count].forEach {
arr2 += $0
}
num = abs(arr-arr2) < num ? abs(arr-arr2) : num
arr = 0
arr2 = 0
}
return num
}
やはり無知なコードはあり得ない.
コードの変更
import Foundation
import Glibc
public func solution(_ A : inout [Int]) -> Int {
var P = Int()
var sum = Int()
var minDiff = Int.max
A.forEach {
sum += $0
}
for (idx, _) in A.enumerated() {
if idx > 0 {
P += A[idx-1]
minDiff = abs((P*2) - sum) < minDiff ? abs((P*2) - sum) : minDiff
}
}
return minDiff
}
いつも刺激的...
Reference
この問題について([Codility] 3. TapeEquilibrium), 我々は、より多くの情報をここで見つけました https://velog.io/@iseeu95/Codility-3.-TapeEquilibriumテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol