1、O(1)时间检测2的幂次
思路:当一个数m是2的n方的时候,那个m的二进制一定是首位为1,后面都为0.而m-1二进制必然是全为1,而且比n少一位。所以两个进行按位与必然为0
class Solution:
"""
@param n: An integer
@return: True or false
"""
def checkPowerOf2(self, n):
# write your code here
return (n & (n - 1) == 0 and n!=0)
2.不同的二叉查找树
思路:卡特兰数。具体介绍可以参考另外一个博文
https://www.cnblogs.com/linshuhui/p/9678180.html
class Solution:
"""
@param n: An integer
@return: An integer
"""
def numTrees(self, n):
# write your code here
i = 1
l = [1]
while i < n+1:
j = 0
i_sum = 0
while j < i:
i_sum += l[j] * l[i - j - 1]
j += 1
l.append(i_sum)
i += 1
return l[-1]