1006. 笨阶乘
1.题目
2.我的解决方案
3.官方的解决方案
数学的算术运算借助栈完成
class Solution:
def clumsy(self, N: int) -> int:
op = 0
stack = [N]
for i in range(N-1, 0, -1):
if op == 0:
stack.append(stack.pop()*i)
if op == 1:
stack.append(int(stack.pop()/float(i)))
if op == 2:
stack.append(i)
if op == 3:
stack.append(-i)
op = (op+1)%4
return sum(stack)
- 时间复杂度:
O
(
n
)
O(n)
O(n)
- 空间复杂度:
O
(
n
)
O(n)
O(n)
直接利用数学运算寻找规律
class Solution:
def clumsy(self, N: int) -> int:
if N <= 4:
return [1, 2, 6, 7][N - 1]
return [N + 1, N + 2, N + 2, N - 1][N % 4]
使用python的内置函数eval(考核的时候不推荐)
class Solution(object):
def clumsy(self, N):
"""
:type N: int
:rtype: int
"""
symbol = ['*','/','+','-']
stack = ''
j = 0
for i in range(N,0,-1):
stack += str(i)
stack += symbol[j%4]
j += 1
return eval(stack[:-1])