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))
}
有问题随时沟通