您当前的位置: 首页 > 

TechGuide

暂无认证

  • 6浏览

    0关注

    176博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【每日一题】JZ10 矩形覆盖

TechGuide 发布时间:2021-08-29 21:09:39 ,浏览量:6

当你的才华还撑不起你的野心时,你应该静下心去学习 。 题目描述

我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,从同一个方向看总共有多少种不同的方法?

比如n=3时,2*3的矩形块有3种不同的覆盖方法(从同一个方向看):

示例

解题思路

假设f [n]表示2*n大矩阵的方法数。 如果你下用数学归纳法,先从简单的n=1、2、3开始计算,可以得出:f[n] = f[n-1] + f[n-2],初始条件f[1] = 1, f[2] =2 是不是感觉简单的斐波那契数列做了三天?

复杂度分析: 时间复杂度 O(N) : 计算 f(n) 需循环 n 次,每轮循环内计算操作使用 O(1) 。 空间复杂度 O(1) : 几个标志变量使用常数大小的额外空间。

参考代码 Java版本
public class Solution {
    public int RectCover(int target) {
        // 被覆盖的目标矩形的形状: 2*n
        // 每次新增加的一列,(1)如果竖着放对应的情况与 target为 n-1 时相同;
        // (2如果横着放,对应的情况与 target 为 n-2 时相同。
        if(target             
关注
打赏
1665329535
查看更多评论
0.0528s