阅读 21

LeetCode之Rotate Array(Kotlin)

问题:


方法: 最简单的方法如下所示,可以每次移动一个位置,只保存一个元素,但算法复杂度是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())
}
复制代码

有问题随时沟通

具体代码实现可以参考Github