0
私は、SwiftのsubArrayの要素によって取得できる最大値を返すメソッドを作成しようとしています。配列内の開始/終了インデックスのすべての可能な順列を見つける
私はsliceSum
メソッドを実行して、ArraySlice
の先頭と末尾のすべての置換をキャプチャするアルゴリズムを作成しています。
私は解決策が簡単なことは知っていますが、私はそれを理解することができません。 sliceSum
メソッドを使用してすべての可能な並べ替えを実行するという目標を達成する方法を提案します。次を考える
func maxSubArray(_ nums: [Int]) -> Int {
var output = 0
func sliceSum(slice: ArraySlice<Int>) -> Int {
// throws out cases that don't work
guard slice.count > 0 || slice.count != nums.count else { return 0 }
return slice.reduce(0, +)
}
var begin = 0
var end = nums.count - 1
while begin < end {
let frontSlice = nums[begin...end]
if sliceSum(slice: frontSlice) > output {
output = sliceSum(slice: frontSlice)
}
begin += 1
end -= 1
}
return output
}
、私は次の配列のスライス[4,-1,2,1]
の合計である、6を返すべきである:
let array = [-2,1,-3,4,-1,2,1,-5,4]
maxSubArray(array)
をお読みいただきありがとうございました。私はあなたの提案を歓迎します。
はどうもありがとうございました! 202件のテストケースのうち198件が解決されました。これは私が今学んだKadaneのアルゴリズムに最も適した仕事のようです。これをSwiftで書く方法を見つけたら、私はアップデートを投稿します。 https://en.wikipedia.org/wiki/Maximum_subarray_problem – Adrian