打印杨辉三角形

打印杨辉三角形

 打印杨辉三角形
 杨辉三角形就是呈现金字塔型的结构 每个的数字表达式为:a(n,x) = a(n - 1,x) + a(n - 									1,x - 1)
 结构如下:
1
1,1
1,2,1
1,3,3,1
1,4,6,4,1
			
解题思路:
循环打印的行数,由于对称型每行的数据类型可以只计算一半,后面的一半完全对折过来。
上代码:
public static List<List<Integer>> yangTrig(int num){

        if (num <= 0) {
            return null;
        }
        List<List<Integer>> result = new ArrayList<>();

        for (int i = 0; i < num; i++) {
            //填充数组列表list,否则后面set会报索引越界异常
            List<Integer> list = new ArrayList<Integer>(Collections.nCopies(i+1, 0));
            list.set(0, 1);
            list.set(i, 1);
            int length = (i+1) % 2 == 0 ? (i+1) / 2 - 1 : (i+1) / 2;
            for (int j = 1; j <= length; j++) {

                int temp = result.get(i - 1).get(j) + result.get(i - 1).get(j - 1);
                list.set(j, temp);
                list.set(i - j, temp);
            }
            result.add(list);

        }

        return result;


    }

复杂度的计算:
由于两次循环,过程没有额外的存储空间,所以时间复杂度和空间复杂度为:

时 间 复 杂 度 = O ( n 2 ) 空 间 复 杂 度 = O ( 1 ) 时间复杂度=O(n^2) 空间复杂度=O(1) =O(n2)=O(1)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值