当前位置: 首页 > news >正文

leetcode刷题日记:118.Pascal‘s Triangle(杨辉三角)

118.Pascal’s Triangle(杨辉三角)

题目给我们一个整数numRows表示杨辉三角形的行数,返回杨辉三角形的前numRows行,下面给出一个杨辉三角形看看它有哪些规律;
在这里插入图片描述
在这里插入图片描述
可以看出杨辉三角形的每一行的最左侧和最右侧的值都为1.
在这里插入图片描述
其余的第i行的第j个元素p[i][j]可以由下图确定:
在这里插入图片描述
可以看出p[i][j] = p[i-1][j]+p[i-1][j-1],有了上述的思路我们可以写出代码如下:

int** generate(int numRows, int* returnSize, int** returnColumnSizes) {int **p = (int **)malloc(sizeof(int **)*numRows);p[0] = (int *)malloc(sizeof(int*));p[0][0] = 1;*returnSize = numRows;*returnColumnSizes = (int *)malloc(sizeof(int)*numRows);(*returnColumnSizes)[0] = 1;for(int i=1; i<numRows;i++){(*returnColumnSizes)[i] = i+1;p[i] = (int *)malloc(sizeof(int)*(i+1));for(int j=0;j<=i;j++){if(j-1<0){p[i][j] = p[i-1][j]+0;}else if(j>i-1){p[i][j] = p[i-1][j-1]+0;}else{p[i][j] = p[i-1][j-1]+p[i-1][j];}}}return p;
}

运行结果截图:
在这里插入图片描述

119.Pascal’s Triangle II( 杨辉三角 II)

这道题要求返回杨辉三角形的第rowIndex行的值,杨辉三角形从第0行开始。有了上述的生成杨辉三角形的代码,我们只需要将杨辉三角的第i行的所有元素复制到x中,然后返回x即可,整体思路不变。

int* getRow(int rowIndex, int* returnSize) {int **p = (int **)malloc(sizeof(int **)*(rowIndex+1));int *x = (int *)malloc(sizeof(int)*(rowIndex+1));p[0] = (int *)malloc(sizeof(int));p[0][0] = 1;*returnSize = rowIndex+1;for(int i=1; i<=rowIndex;i++){p[i] = (int *)malloc(sizeof(int)*(i+1));for(int j=0;j<=i;j++){if(j-1<0){p[i][j] = p[i-1][j]+0;}else if(j>i-1){p[i][j] = p[i-1][j-1]+0;}else{p[i][j] = p[i-1][j-1]+p[i-1][j];}}}for(int i=0;i<rowIndex+1;i++){x[i] = p[rowIndex][i];}return x;
}

运行结果截图:
在这里插入图片描述
这一道题也可以采用我在杨辉三角这篇文章中的思路,因为根据二项式定理,可以求出杨辉三角形每一行的值。

相关文章:

  • supervisor启动出现错误
  • CSRF 漏洞详解
  • Jenkins 搭建
  • selenium/webdriver运行原理与机制
  • node插件MongoDB(四)—— 库mongoose 操作文档使用(新增、删除、更新、查看文档)(二)
  • 【Linux】虚拟机连不上外网 (ping www.baidu.com不通)
  • 二叉树题目:二叉树最大宽度
  • 136. 只出现一次的数字 --力扣 --JAVA
  • Kubernetes介绍和环境部署
  • k8s 对外服务之 Ingress( LB + ingress)
  • cadence virtuoso 修改电路原理图背景颜色
  • Ansible的变量(vars,register,set_fact)
  • pandas读写json的知识点
  • docker/ nvidia-docker
  • Postman小白安装和注册入门教程
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • javascript数组去重/查找/插入/删除
  • Joomla 2.x, 3.x useful code cheatsheet
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Redis字符串类型内部编码剖析
  • springboot_database项目介绍
  • uva 10370 Above Average
  • 搞机器学习要哪些技能
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 使用 Docker 部署 Spring Boot项目
  • 数据科学 第 3 章 11 字符串处理
  • 协程
  • - 转 Ext2.0 form使用实例
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • # Apache SeaTunnel 究竟是什么?
  • #100天计划# 2013年9月29日
  • #FPGA(基础知识)
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (1)bark-ml
  • (1)STL算法之遍历容器
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (小白学Java)Java简介和基本配置
  • (已解决)什么是vue导航守卫
  • (转)四层和七层负载均衡的区别
  • .bat文件调用java类的main方法
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET/C# 使用反射注册事件
  • /etc/skel 目录作用
  • @Documented注解的作用
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @RunWith注解作用
  • @SuppressWarnings注解
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [Apio2012]dispatching 左偏树
  • [C++]unordered系列关联式容器