两种方法实现杨辉三角(java实现)

article/2025/9/13 6:19:11

🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!

欢迎志同道合的朋友一起加油喔🦾🦾🦾


目录

目录

打印杨辉三角形

方法一:顺序表实现 (ArrayList)

 方法二:暴力求解(双重for循环)



打印杨辉三角形

科普:杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于 1050 年首先发现并使用的。而后南宋数学家杨辉在《详解九章算法》一书中记载并保存了“贾宪三角形“。因此,贾宪三角形又被称为杨辉三角形。

简单地说,杨辉三角形的构成如下面动图所示:
在这里插入图片描述

从上面的动图我们可以得出一个道公式:每一行的第一个元素和最后一个元素都是1,杨辉三角形第i行j列的值 = 第 (i-1) 行 (j-1) 列的值 + 第 (i-1) 行 (j) 列的值。

编写代码,让程序实现如下:

方法一:顺序表实现 (ArrayList)

 通过杨辉三角图,我们可以知道杨辉三角对应的每一行会存有各自相应的数字。

随着行数的增加,每一行中的项数也在增加。

那么我们何不把该杨辉三角图看成是一个二维数组,每一行都存了一个list链表。

 代码实现如下:

class Solution {// 定义一个生成杨辉三角的方法,参数为行数public List<List<Integer>> generate(int numRows) {// 定义一个二维列表用于存储杨辉三角的每一行List<List <Integer>> arrayList = new ArrayList<>();// 定义一个列表用于存储第一行,即 [1]List<Integer> one = new ArrayList<>();// 向列表 one 中添加数字 1one.add(1);// 将第一行添加到 arrayList 中arrayList.add(one);// 从第二行开始,遍历 numRowsfor (int i = 1; i < numRows; i++) {// 定义一个列表用于存储当前行List<Integer> cur = new ArrayList<>();// 当前行的第一个元素是 1cur.add(1);// 获取上一行的数据List<Integer> pre = arrayList.get(i - 1);// 从第二个元素开始,遍历上一行的数据for (int j = 1; j < i; j++) {// 当前行的第 j 个元素等于上一行的第 (j-1) 个元素与第 j 个元素之和int ret = pre.get(j - 1) + pre.get(j);// 将当前元素添加到当前行cur.add(ret);}// 当前行的最后一个元素是 1cur.add(1);// 将当前行添加到 arrayList 中arrayList.add(cur);}// 返回存储了整个杨辉三角的二维列表return arrayList;}
}

 方法二:暴力求解(双重for循环)

public class Test3 {// 主方法public static void main(String[] args) {// 创建一个 Scanner 对象用于接收用户输入Scanner scanner = new Scanner(System.in);// 从用户输入中获取杨辉三角的行数int n = scanner.nextInt();// 创建一个二维数组用于存储杨辉三角int[][] arr = new int[n][];// 杨辉三角算法for (int i = 0; i < arr.length; i++) { // 外层遍历行数arr[i] = new int[i + 1]; // 给每一行数组开辟空间for (int j = 0; j < arr[i].length; j++) { // 内层遍历每一行的元素if (j == 0 || j == arr[i].length - 1) { // 如果是每一行的第一个元素或最后一个元素arr[i][j] = 1; // 将其赋值为 1} else { // 其他情况arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1]; // 当前元素的值为上一行同列元素和前一列元素之和}}}// 输出杨辉三角for (int[] tmp : arr) { // 遍历每一行for (int x : tmp) { // 遍历每一行的元素System.out.print(x + " "); // 输出当前元素,后面添加一个空格}System.out.println(); // 换行}}
}


http://chatgpt.dhexx.cn/article/jjmdIq8o.shtml

相关文章

一文搞懂 Base64 , 简单!

Base64是一种用64个字符来表示任意二进制数据的方法。 # Base64 编码表&#xff08;标准&#xff09; 相信我们都知道ASCII 编码&#xff0c;从A-Z、a-z、0-9和一些其他的特殊字符&#xff0c;这些字符都有唯一的一个数字来表示。 同理Base64也有这样一套编码。 范围是”A-…

base64原理与实现

1. base64 bse64是一种以64个可见字符集对二进制数据进行编码的编码算法。 1.1 应用范围 base64常用于网络数据传输过程的编解码环节。HTTP环境下传递较长的标识信息。例如&#xff0c;在Java Persistence系统Hibernate中&#xff0c;就采用了base64来将一个较长的一个标识符&a…

Base64编码的原理及实现(源码)

Base64编码在邮件中最为常见&#xff0c;呵呵&#xff0c;因为我最近就是在做邮箱报警&#xff0c;SMTP验证就是Base64编码用户名和密码进行验证的&#xff0c;并且附件也是要转换成base64编码的数据&#xff0c;然后再发送的。该编码使用64个明文来编码任意的二进制文件&#…

详述图片base64加密的原理,告诉你什么是“/9j/“

欢迎大家搜索“小猴子的技术笔记”关注我的公众号&#xff0c;有问题可以及时和我交流。 在日常的生活中&#xff0c;我们肯定都经历过类似这样的场景&#xff1a;报名考试上传图片&#xff0c;网站要求的是上传的照片不能大于多少&#xff0c;而且要求是“.jpg”的格式。 于是…

base64编码原理之python应用

base64产生原因&#xff1f; 先看ascii码的图片 scii码的128&#xff5e;255之间的值是不可见字符。而在网络上交换数据时&#xff0c;比如说从A地传到B地&#xff0c;往往要经过多个路由设备&#xff0c;由于不同的设备对字符的处理方式有一些不同&#xff0c;这样那些不可见…

一文搞懂Base64编码原理

Base64是最常见的用于传输8Bit字节码的编码方式之一&#xff0c;它是一种基于64个可打印字符来表示二进制数据的方法。 Base64是什么 Base64编码&#xff0c;是由64个字符组成编码集&#xff1a;26个大写字母AZ&#xff0c;26个小写字母az&#xff0c;10个数字0~9&#xff0c…

Base64编码解码原理

本篇文章主要是从Base64的原理入手&#xff0c;并给出java的Base64实现。方便了解、学习Base64。 base64的简介----摘自于百度百科 一、Base64大致用途 很早之前&#xff0c;电子邮件刚刚问世&#xff0c;那时候消息的传递都是英文&#xff0c;后来中国开通了互联网之后&#…

Java—Base64编码原理

Base64作为java编程中常见的编码方式&#xff0c;经常在各种加密&#xff08;例如AES、RSA等等&#xff09;的过程中用来实现加解密中间产物可读性的重要工具&#xff0c;很值得我们去了解一下它的原理。Base64是网络上最常见的用于传输8Bit字节码的编码方式之一&#xff0c;Ba…

一文轻松明白 Base64 编码原理

把图片丢进浏览器&#xff0c;打开sources能看到一长串字符串&#xff0c;这是图片的Base64编码。这一长串编码到底是怎么生成的呢&#xff1f; 我们接下来探索一下base64编码的原理 Base64 名称的由来 Base64编码要求把3个8位的字节&#xff08;3824&#xff09;转化为4个6…

base64编码原理及代码实现

在ctf里reverse经常会有base64相关的题型&#xff0c;每次写到这类题型只能凭经验猜测考点来解题&#xff0c;特此出一个base64相关的博客&#xff0c;加深对base64的理解&#xff0c;下次再看到伪代码也不会觉得慌了&#xff0c;毕竟纵使实现形式不同&#xff0c;代码的核心逻…

Base64编码的原理与常用实现

这篇主要是为了后面好介绍加密算法&#xff0c;做的铺垫。 这个是基础&#xff0c;什么是一个程序员的涵养&#xff0c;这些基础就是涵养。 平时可能用不到&#xff0c;但必须得会。 如果连这个原理都说不上来&#xff0c;就别玩王者荣耀绝地求生英雄联盟和平精英了&#xff0c…

Base64原理及魔改更换码表

一&#xff0c;Base64是什么&#xff08;原理比较难理解&#xff0c;可参考下面的实践 &#xff09; Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64&#xff0c;所以每6个比特为一个单元&#xff0c;对应某个可打印字符。三个字节有24个比特…

base64加密原理解析

开发者对Base64编码肯定很熟悉&#xff0c;是否对它有很清晰的认识就不一定了。实际 上Base64已经简单到不能再简单了&#xff0c;如果对它的理解还是模棱两可实在不应该。大概介绍一下Base64的相关内容&#xff0c;花几分钟时间就可以彻底理解它。文 章下边贴了一个Base64的编…

Base64加密原理

Base64加密方式是将三个八位的字节转化为四个六位的字节&#xff08;不足八位的高位补00&#xff09;&#xff0c;3*8 4*6&#xff1b;&#xff0c;所以base64加密过后的内容比原来的大三分之一&#xff1b; 举例&#xff1a;加密“ace”&#xff0c; ace转化为二进制为&…

Base64编码原理分析

文章目录 一、认识&#xff08;一&#xff09;认识&#xff08;二&#xff09;计算&#xff08;1&#xff09;规则&#xff08;2&#xff09;示例&#xff08;3&#xff09;Base64编码转换表 二、网页图片转base64编码分析&#xff08;一&#xff09;Data URI&#xff08;二&am…

base64编码,原理是什么,有什么作用?

base64到底是什么东西呢&#xff1f; Base64编码是网络上常见的用于传输8bit字节数据的一种编码方式之一 , 有些人和书本会将编码写成加密算法&#xff0c;这其实是欠妥的。因为任何人拿到编码后的数据都能转化成原始数据&#xff0c;算法是透明的&#xff0c;也不存在秘钥的概…

一篇文章彻底掌握Base64编码原理

一篇文章彻底掌握Base64编码原理 在互联网中的每一刻&#xff0c;你可能都在享受着Base64带来的便捷&#xff0c;但对于Base64的基础原理又了解多少&#xff1f;今天这篇博文带领大家了解一下Base64的底层实现。 Base64的由来 目前Base64已经成为网络上常见的传输8Bit字节代…

Base64编码解码原理详解

Base64编码解码原理详解 1. Base64字符的组成部分 Base64所用字符&#xff1a; 0,1,2 ….9 A,B,C,D…Z a,b,c,d…z / 对应ASCII&#xff1a; 48,49…58,65,66…90,97,98…122, 43,47 2. 10个数字&#xff0c;26个大写字母&#xff0c;26个小写字母&#xff0c;1个&#xff0c…

彻底弄懂base64的编码与解码原理

作者介绍 背景 base64的编码原理网上讲解较多&#xff0c;但解码原理讲解较少&#xff0c;并且没有对其中的内部实现原理进行剖析。想要彻底了解base64的编码与解码原理&#xff0c;请耐心看完此文&#xff0c;你一定会有所收获。 涉及算法与逻辑运算概念 在探究base64编码原理…

深入理解 Base64 底层原理

Base64 是一种常见数据编码方式&#xff0c;常用于数据传输。对于移动开发者来讲&#xff0c;网络请求中会经常使用到。对 JSON 熟悉的同学都知道&#xff0c;JSON 的序列化工具都不支持将 byte 数组直接放入 JSON 数据中&#xff0c;针对这种二进制数据&#xff0c;在处理的时…