问题:
方法:
最简单的方法如下所示,可以每次移动一个位置,只保存一个元素,但算法复杂度是O(kn)。优化算法是三重翻转,先翻转所有元素,然后翻转0到k-1,然后翻转0到k,最后输出结果即可,算法复杂度是O(n)
class RotateArray {
fun rotate(nums: IntArray, k: Int): Unit {
for (step in 1..k) {
val last = nums.last()
for (index in nums.lastIndex downTo 1) {
nums[index] = nums[index - 1]
}
nums[0] = last
}
}
}
fun main(args: Array<String>) {
val input = intArrayOf(-1,-100,3,99)
val rotateArray = RotateArray()
rotateArray.rotate(input, 2)
println(input.toList())
}
有问题随时沟通
网友评论