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

详细介绍:Leetcode 3700. Number of ZigZag Arrays II

  • Leetcode 3700. Number of ZigZag Arrays II
    • 1. 解题思路
    • 2. 代码构建
  • 题目链接:3700. Number of ZigZag Arrays II

1. 解题思路

这一题事实上就是上一题3699. Number of ZigZag Arrays I增加了就是的进阶版本,主要的变化就nnn的复杂度,nnn最大可以取到10910^9109,因此暴力的迭代显然就不现实了,但其核心的迭代公式依然还是上一题中分析的那样:
{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

这里,注意到,如果我们令v⃗=concat(u⃗,d⃗)\vec{v} = \mathop{concat}(\vec{u}, \vec{d})v=concat(u,d)一个矩阵乘法:就是,那么事实上上述迭代过程可以写作
v⃗n+1=M⋅v⃗n\vec{v}_{n+1} = M \cdot \vec{v}_{n}vn+1=Mvn

因此,不难推导:
v⃗n=Mn−1⋅v⃗1\vec{v}_{n} = M^{n-1} \cdot \vec{v}_{1}vn=Mn1v1

此时,困难也就变成了如何快速地求矩阵MMMn−1n-1n1了,这个就变成了一个常规的二分处理的算法了。

当然,既然这里涉及到了矩阵乘法,因此,我们自然而然就可以启用numpy来加速一下运算了,这里就不过多展开了。

2. 代码实现

给出python代码实现如下:

import numpy as np
MOD = 10**9 + 7
class Solution:
def zigZagArrays(self, n: int, l: int, r: int) -> int:
d = r-l+1
vec = [1 for _ in range(d-1)] + [0] + [0] + [1 for _ in range(d-1)]
vec = np.array(vec, dtype=object)
M = [[0 for _ in range(2*d)] for _ in range(2*d)]
for i in range(d):
for j in range(i+1, d):
M[i][d+j] = 1
for j in range(i):
M[i+d][j] = 1
M = np.array(M, dtype=object)
def pow_mul(M, vec, n):
res = vec
while n:
if n % 2 == 1:
res = (M @ res) % MOD
M = (M @ M) % MOD
n = n // 2
return res
res = pow_mul(M, vec, n-1)
return sum(res) % MOD

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

http://www.hn-smt.com/news/3519/

相关文章:

  • 第三十篇
  • Java 集合 “Map(1)”面试清单(含超通俗生活案例与深度理解) - 教程
  • 0295-Nand-时序逻辑
  • Python逻辑运算 _ 今年过节能收礼吗
  • 【SPIE出版、往届已EI检索】第二届遥感技术与图像处理国际学术会议(RSTIP 2025)
  • 2025年叠元宝机器厂家权威推荐榜单:自动元宝机/金银元宝机 /全自动元宝机源头厂家精选
  • RecyclerView使用-涂鸦智能App的首页和添加效果-从0到1过程
  • 微信商户号的对接,不同主体实现 - A公司换B公司银行收款账号
  • C++对象模型和this指针Project5
  • 2025年络合铁脱硫剂厂家爱权威推荐榜单:沼气脱硫剂/天然气脱硫剂 /铁基脱硫剂源头厂家精选
  • 微波雷达和毫米波雷达有什么区别
  • 2025年绞吸式抽沙船厂家权威推荐榜单:绞吸式清淤船/绞吸挖泥船 /绞吸抽沙船源头厂家精选
  • 2025年胶纸封箱机厂家爱权威推荐榜单:两侧驱动封箱机/全自动胶带封箱机 /全自动角边封箱机源头厂家精选
  • 2025年靠谱的汽车改装厂家最新推荐权威榜
  • Notion和Airtable之后,下一个现象级效率神器会是Dify吗?
  • 软考复习 - 2025/10/30
  • 2025 年 10 月预制舱厂家推荐排行榜,光伏预制舱,风电光伏预制舱,储能预制舱,一二次设备电气预制舱,SVG 预制舱,控制预制舱公司推荐
  • 2025年比较好的数字化涂装生产线厂家推荐及选择参考
  • 基于英飞凌MCU实现BLDC无感正弦波FOC控制
  • .NET6 Web程序部署在IIS上
  • HarmonyOS自动化测试与持续集成实战指南
  • 2025年质量好的商用电器开关行业内口碑厂家排行榜
  • 2025年10月珠海酒店推荐榜:十家高分住宿全维度对比
  • 2025年口碑好的粉末冶金齿轮厂家实力及用户口碑排行榜
  • Affinity Photo 2.6.5 (macOS, Windows) - 梦寐以求的照片编辑器
  • Adobe Photoshop 2026 v27.0 (macOS, Windows) - 照片和设计软件
  • 2025年评价高的双功能缓冲滑轨厂家最新权威实力榜
  • Ngene 代码
  • 2025年水平生命线工厂权威推荐榜单:水平生命线系统/钢结构生命线/防坠落水平生命线源头厂家精选
  • 2025.10.28__jyu每日一题题解