美文网首页
LeetCode之Rotate Array(Kotlin)

LeetCode之Rotate Array(Kotlin)

作者: 糕冷羊 | 来源:发表于2020-01-06 20:28 被阅读0次

问题:



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

相关文章

网友评论

      本文标题:LeetCode之Rotate Array(Kotlin)

      本文链接:https://www.haomeiwen.com/subject/bnxlactx.html