第一题 颠倒二进制位
题目
解题思路
代码
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}
复杂度剖析
工夫复杂度:O(1)
空间复杂度:O(1)
第二题 杨辉三角
题目
解题思路
杨辉三角每一行除第一个数和最初一个数为一以外
其余每个数都是上一行两个数之和
咱们能够以此为外围设计代码
具体代码
//难点在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)。不思考返回值的空间占用。