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

Leetcode 3699. Number of ZigZag Arrays I

  • Leetcode 3699. Number of ZigZag Arrays I
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3699. Number of ZigZag Arrays I

1. 解题思路

这一题思路上就是一个动态规划。

我们定义两个长度为r−l+1r-l+1rl+1数组u⃗\vec{u}ud⃗\vec{d}d,分别表示当数组个数为nnn时,第一个元素为iii且下一个元素的方向为向上和向下时的取法的个数。

则易知有迭代公式:
{un+1i=∑j=i+1rdnjdn+1i=∑j=li−1unj\left\{ \begin{aligned} u_{n+1}^i &= \sum\limits_{j=i+1}^{r} d_{n}^{j} \\ d_{n+1}^i &= \sum\limits_{j=l}^{i-1} u_{n}^{j} \end{aligned} \right. un+1idn+1i=j=i+1rdnj=j=li1unj

当然,直接进行迭代的话算法复杂度将会是O(N3)O(N^3)O(N3),不过考虑到其中有两个累加操作,因此,我们可以通过累积数组的方式省略掉其中一次循环,整体的算法复杂度就是O(N2)O(N^2)O(N2)

2. 代码实现

给出python代码实现如下:

MOD = 10**9 + 7class Solution:def zigZagArrays(self, n: int, l: int, r: int) -> int:d = r-lup, down = [1 for _ in range(d)] + [0], [0] + [1 for _ in range(d)] for i in range(n-2, -1, -1):prev_up = [0 for _ in range(d+1)]valid = 0for j in range(d-1, -1, -1):valid = (valid + down[j+1]) % MODprev_up[j] = validprev_down = [0 for _ in range(d+1)]valid = 0for j in range(1, d+1):valid = (valid + up[j-1]) % MODprev_down[j] = validup, down = prev_up, prev_downreturn (sum(up) + sum(down)) % MOD

提交代码评测得到:耗时10691ms,占用内存18.52MB。

http://www.dtcms.com/a/442716.html

相关文章:

  • 永久免费网站申请注册页面设计培训
  • postgresql分区表
  • 美食网站首页模板网络外包运营公司
  • Linux应用 文件属性和目录
  • pyQt实现一种按钮切换关联变化的勾选框的逻辑
  • 网站设计要先做图么网站建设为中心
  • Doris专题1- 什么是Doris
  • Linux文件系统---软硬连接
  • 如何建立商城网站拼团小程序制作平台
  • 火车头wordpress建站群网站移动站
  • 【51单片机32个灯,第一次亮1,2。第二次亮2,3。第三次亮3,4。。。。】2023-2-10
  • 【LangChain】P12 LangChain 提示词模板深度解析(三):实例化参数
  • 智能数据交换系统:内涵、架构、优化与发展趋势
  • 手机金融界网站网站单页是什么意思
  • 14.伪修复提交与来自“收容所”的坐标
  • 余姚做网站哪家好北京市工程信息网
  • 如何构建汽车电子与芯片半导体行业的一体化质量堡垒:全星质量管理QMS系统功能分析
  • 常微分方程万能解的形式
  • 专门做美剧的网站咸宁手机网站建设
  • sed使用手册
  • 网站开发搭建ssc p2p 互助做网站第一步做什么
  • 做教育网站有什么好处搜狗推广
  • 成品网站模板源码 网站源码模板 html源码下载
  • Scrapy 框架深度解析:架构、组件与工作流程
  • 网站例子谷歌搜索引擎免费
  • 深圳专业设计网站平台做网站为什么可以自学
  • Ruby CGI 编程
  • 【数形结合】当天先到者等未到者20分钟,见面概率
  • 广州广告制作有限公司优化工具 wordpress
  • 企业网站建设需要费用什么是4c品牌建设模型