数字与二进制运算

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]

posted on 2018-10-31 16:47  哟,写bug呢??  阅读(262)  评论(0编辑  收藏  举报

导航