美文网首页
LeetCode之Beautiful Arrangement I

LeetCode之Beautiful Arrangement I

作者: 糕冷羊 | 来源:发表于2020-05-12 14:19 被阅读0次

问题:



方法:
本题有一个关键限定条件,一个是数组元素是1..n和数组长度相同,所以输出数组必是1..n的某种排序。则必有k+1个元素存在k个不同的差值,同时剩余的n-(k+1)个元素必是相同的差值,选最小差值为1则剩余的n-(k+1)个元素顺序排列即可,同时前k+1个元素使用如下排列,1, k+1, 2, k, 3, k-1..,差值分别为k, k-1, k-2, k-3 .. 1,正好满足题意。

class BeautifulArrangementII {
    fun constructArray(n: Int, k: Int): IntArray {
        val result = IntArray(n) {
            0
        }
        for (index in 0..k step 2) {
            result[index] = index / 2 + 1
        }
        for (index in 1..k step 2) {
            result[index] = k + 1 - index / 2
        }
        for (index in k + 1..(n - 1)) {
            result[index] = index + 1
        }
        return result
    }
}

fun main(args: Array<String>) {
    val beautifulArrangementII = BeautifulArrangementII()
    val result = beautifulArrangementII.constructArray(8, 6)
    CommonUtils.printArray(result.toTypedArray())
}

有问题随时沟通

具体代码实现可以参考Github

相关文章

网友评论

      本文标题:LeetCode之Beautiful Arrangement I

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