LeetCode刷题-119. 杨辉三角 II
题目链接:119. 杨辉三角 II
¶题解:
类似于上一个杨辉三角!
¶题目简述:
赶回第k
行杨辉三角,要求空间O(k)
¶题解一:普通版
思路:
- 为了省空间到
O(k)
,我么使用滚动数组解决 - 一个数组记录上一层,一个数组记录下一层,来回滚动即可
时间复杂度:O(n^2)
¶AC代码一:
1 |
|
¶题解二:位运算优化
思路: 对于滚动数组是有特点的,我们可以用位运算来优化一下:
位运算滚动数组: 根据行数编号的奇偶来运算,上一层若为奇数,则下一层为偶数,使用i
表示下一层,则上一层为i - 1
,若直接这样那么空间复杂度是n^2
级别的,但是,我们只要两层,可以对其奇偶进行判断即可,即和1左与运算即可,当前层为i & 1
,上一层为i - 1 & 1
,这样就把空间降到了两层!
使用位运算优化: 会比普通的滚动数组快一点!
最后答案: f[n & 1]
实现: 构建二维数组,第一维只有2,使用时将第一维都与1做一下与运算即可!
时间复杂度:O(n)
¶AC代码二:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小牛博客!
评论