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

如何把购物网站做成非经营网站网上全网推广

如何把购物网站做成非经营网站,网上全网推广,网站建设叁金手指花总1,东丽开发区做网站公司杨辉三角:递归与记忆化的高效解法 问题描述 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。杨辉三角的特点是每个数等于其左上方和右上方数之和。 示例: 输入:numRows 5输出:[[1],[1,1],[1,2,1],[1,3,3…

杨辉三角:递归与记忆化的高效解法

问题描述

给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。杨辉三角的特点是每个数等于其左上方和右上方数之和。

示例

  • 输入:numRows = 5
  • 输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

解法分析:递归+记忆化优化

核心思路

杨辉三角的数学定义可表示为递归关系:

f(i,j) = {1,                          j=0 或 j=if(i-1,j-1) + f(i-1,j),     其他情况
}

直接递归会导致指数级时间复杂度( O ( 2 n ) O(2^n) O(2n)),通过二维数组存储已计算结果,可将复杂度优化至 O ( n 2 ) O(n^2) O(n2)

算法步骤
  1. 初始化结果集:创建 List<List<Integer>> 存储结果
  2. 创建记忆数组:二维数组 triangle 存储计算过的值
  3. 逐行生成
    • 每行创建新数组(长度 = 行号+1)
    • 计算每个位置的值:
      • 边界位置直接设为1
      • 中间位置递归计算并存储
  4. 添加到结果:将每行生成的列表加入结果集

代码实现

class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> result = new ArrayList<>();int[][] triangle = new int[numRows][]; // 记忆数组for(int i = 0; i < numRows; i++) {triangle[i] = new int[i+1]; // 初始化当前行List<Integer> list = new ArrayList<>();for(int j = 0; j <= i; j++) {int element = element(triangle, i, j); // 获取元素值list.add(element);}result.add(list); // 添加当前行}return result;}// 递归计算元素值(带记忆化)private int element(int[][] triangle, int i, int j) {if(triangle[i][j] > 0) { // 已计算过return triangle[i][j];}if(j == 0 || i == j) { // 边界条件triangle[i][j] = 1;return 1;}// 递归计算:上左元素 + 上右元素triangle[i][j] = element(triangle, i-1, j-1) + element(triangle, i-1, j);return triangle[i][j];}
}

复杂度分析

  • 时间复杂度 O ( n 2 ) O(n^2) O(n2)
    使用记忆化存储避免重复计算,每个元素仅计算一次
  • 空间复杂度 O ( n 2 ) O(n^2) O(n2)
    存储整个杨辉三角的二维数组

迭代解法对比

class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> result = new ArrayList<>();for(int i = 0; i < numRows; i++) {List<Integer> row = new ArrayList<>();for(int j = 0; j <= i; j++) {if(j == 0 || j == i) {row.add(1); // 边界元素} else {// 取上一行的相邻元素int val = result.get(i-1).get(j-1) + result.get(i-1).get(j);row.add(val);}}result.add(row);}return result;}
}

方法对比

方法时间复杂度空间复杂度优势
递归+记忆化 O ( n 2 ) O(n^2) O(n2) O ( n 2 ) O(n^2) O(n2)直接体现数学定义
迭代 O ( n 2 ) O(n^2) O(n2) O ( n 2 ) O(n^2) O(n2)代码更简洁,无递归开销

数学特性与应用

  1. 二项式系数:第n行第k个数 = C ( n , k ) C(n,k) C(n,k)
  2. 对称性 C ( n , k ) = C ( n , n − k ) C(n,k) = C(n,n-k) C(n,k)=C(n,nk)
  3. 行和规律:第n行所有数之和 = 2 n − 1 2^{n-1} 2n1
  4. 对角线性质:斜对角线数字构成斐波那契数列

实际应用场景

  • 概率计算(二项分布)
  • 组合数学问题
  • 代数展开系数
  • 计算机图形学(曲面生成)

总结

通过记忆化优化递归解法,我们既保持了数学定义的直观性,又获得了与迭代法相当的效率。杨辉三角作为经典数学概念,其高效生成算法展示了递归优化技术的强大威力。两种解法各有优势:

  • 递归+记忆化:更贴近问题数学定义
  • 迭代法:实现更简洁,无递归开销

理解这两种解法的核心在于掌握递归关系的优化技巧,这对解决动态规划类问题具有重要指导意义。

http://www.dtcms.com/wzjs/407138.html

相关文章:

  • 深圳东道建设集团网站湖南网络推广排名
  • 灵动网站建设灰色产业推广引流渠道
  • 河间做网站 申梦网络邯郸seo推广
  • 香河建设局网站bt种子搜索神器
  • 通江网站建设seo人员的相关薪资
  • 网站后台不更新如何创建微信小程序
  • 网页设计制作分段br成都网站seo费用
  • 上饶哪里做网站优化资源配置
  • 电商网站前端开发免费友情链接网站
  • 做aelogo动效有什么好的网站管理培训
  • 义乌品牌网站建设建站软件可以不通过网络建设吗
  • 福建金融公司网站建设百度官网首页网址
  • 一级a做爰片i网站最佳磁力搜索引擎
  • 武汉外贸网站建设公司百度信息流推广和搜索推广
  • 河南省建设部网站官网权威解读当前经济热点问题
  • 劳动保障局瓯海劳务市场和做网站营销技巧在线完整免费观看
  • 网络营销的经济gdp是什么图片优化是什么意思
  • 九台市做网站的公司西安seo教程
  • wordpress建站多用户国际实时新闻
  • 威县做网站哪儿便宜关键词优化公司靠谱推荐
  • 深圳网站建设公司排行榜百度app
  • 动态网站开发组合中央常委成员名单
  • 做家教需要什么哪个网站的会员日本免费服务器ip地址
  • 有什么有什么好的学做饮品的网站长沙网络推广平台
  • 网站建设的请示关键词指数查询工具
  • 揭阳做网站的优化关键词的方法
  • 在记算机上登陆一个网站点怎么做网站网络排名优化方法
  • 邢台seo价格可靠的网站优化
  • 下载网站系统源码广告联盟全自动赚钱系统
  • 将电脑做的网站放到外网搜索关键词排行榜