LeetCode之Clumsy Factorial(Kotlin

2020-05-27  本文已影响0人  糕冷羊

问题:



方法:
根据余数判断当前使用的操作符,因为加减的优先级最低,所以遇到加减操作可以直接操作,遇到乘除操作需要先保存成temp,根据以上规则循环计算可得最终结果。(貌似可以根据数学推导得到数学公示直接计算)

class ClumsyFactorial {
    fun clumsy(N: Int): Int {
        var result = 0
        var cur = N
        var temp = 0
        while (cur > 0) {
            val case = (N - cur) % 4
            when(case) {
                3 -> {
                    result += cur
                }
                0 -> temp = cur
                1 -> temp *= cur
                2 -> temp /= cur
            }
            cur--
            if (case == 3 || cur == 0) {
                if (N - cur <= 4) {
                    result += temp
                } else {
                    result -= temp
                }
            }
        }
        return result
    }
}

fun main(args: Array<String>) {
    val input = 10
    val clumsyFactorial = ClumsyFactorial()
    print(clumsyFactorial.clumsy(input))
}

有问题随时沟通

具体代码实现可以参考Github

上一篇 下一篇

猜你喜欢

热点阅读