题解 | 矩形覆盖
矩形覆盖
https://www.nowcoder.com/practice/72a5a919508a4251859fb2cfb987a0e6
class Solution {
public:
int rectCover(int number) {
if(number==0) return 0;
if(number==1) return 1;
int prepre0 = 1, pre0 = 1;
int cur0;
for(int i = 2; i <= number; ++i){
cur0 = pre0+prepre0;
prepre0 = pre0;
pre0 = cur0;
}
return cur0;
}
};
因为到上一个状态的列,在只有两行的情况下,两行是相同的,所以只考虑第一行的情况就行,那么只有从前两列中得到,直接相加就行。也就是斐波拉契数列。
时间复杂度O(n),空间复杂度O(1)。

