【golang】leetcode初级-颠倒二进制位&杨辉三角

wric

第一题 颠倒二进制位

题目

image.png

解题思路

image.png

代码

const(
    m1=0x55555555 //0101 0101  0101 0101  0101 0101  0101 0101
    m2=0x33333333 //0011 0011  0011 0011  0011 0011  0011 0011
    m4=0x0f0f0f0f
    m8=0x00ff00ff
)
func reverseBits(num uint32) uint32 {
    num = num>>1&m1 | num&m1<<1
    num = num>>2&m2 | num&m2<<2
    num = num>>4&m4 | num&m4<<4
    num = num>>8&m8 | num&m8<<8
    return num>>16 | num<<16
}

复杂度分析

image.png
时间复杂度:O(1)

空间复杂度:O(1)

第二题 杨辉三角

题目

image.png

解题思路

杨辉三角每一行除第一个数和最后一个数为一以外
其余每个数都是上一行两个数之和
我们可以以此为核心设计代码

详细代码

//难点在golang中的二维数组的使用
func generate(numRows int) [][]int {

ans := make([][]int, numRows)
for i := range ans {
    ans[i] = make([]int, i+1)
    ans[i][0] = 1
    ans[i][i] = 1
    for j := 1; j < i; j++ {
        ans[i][j] = ans[i-1][j] + ans[i-1][j-1]
    }
}
return ans

}

复杂度分析

时间复杂度:O(n)。

空间复杂度:O(1)。不考虑返回值的空间占用。

image.png

阅读 451
10 声望
3 粉丝
0 条评论
10 声望
3 粉丝
文章目录
宣传栏