问题:
方法:
满足要求最多的块数是arr.length,这种情况需要每个元素正好在索引的位置,如0在index 0的位置,1在index 1的位置,进而可以推导出符合条件的chunk范围即(i, j)需满足sum(arr[i]-i)等于0,根据这一条件即可以获取最终结果。
class MaxChunksToMakeSorted {
fun maxChunksToSorted(arr: IntArray): Int {
var sum = 0
var result = 0
for (el in arr.withIndex()) {
sum += el.value
sum -= el.index
if (sum == 0) {
result+=1
}
}
return result
}
}
fun main(args: Array<String>) {
val input = intArrayOf(0, 2, 1)
val maxChunksToMakeSorted = MaxChunksToMakeSorted()
print(maxChunksToMakeSorted.maxChunksToSorted(input))
}
有问题随时沟通
网友评论