恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

DeepSeek LeetCode 3699. 锯齿形数组的总数 I Java实现

  • 首页
  • 资讯中心
  • /
  • DeepSeek LeetCode 3699. 锯齿形数组的总数 I Java实现

相关资讯

DeepSeek LeetCode 3699. 锯齿形数组的总数 I Rust实现 2026/8/2 18:49:01
基于LLM的学术论文智能摘要与观点提取系统 2026/8/2 18:49:01
大语言模型在电商数据分析中的实践与优化 2026/8/2 18:49:02

最新资讯

MATLAB神经网络与遗传算法结合的预测优化实战解析
四个AI智能体跑通内容自动化全链路
从GPT5.6Sol骗局到GPT-Image2实战:模型识别与API接入指南
Ollama v0.32.15升级与本地部署全攻略:从安装到GPU加速排错
AI裂变设计批量生成POD商品图:从图案提取到自动上样全流程
MATLAB夜间车牌识别实战:图像增强与模板匹配全解析

今日推荐

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形
Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查
STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

本周热门

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析
数字电路时序基石:深入理解建立时间与保持时间
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

DeepSeek LeetCode 3699. 锯齿形数组的总数 I Java实现

发布时间:2026/8/31 12:28:19
DeepSeek    LeetCode 3699. 锯齿形数组的总数 I Java实现 这道题的核心是动态规划 前缀和优化。因为数组的增减趋势必须交替如 abcd我们只需记录最后一个值和最后一步方向。核心思路· 状态定义up[i] 表示最后一步为上升且以值 i 结尾的方案数down[i] 同理为下降。· 状态转移· 要形成新的上升到 x前一步必须是下降且结尾值 xnewUp[x] sum(down[0] ... down[x-1])。· 要形成新的下降到 x前一步必须是上升且结尾值 xnewDown[x] sum(up[x1] ... up[m-1])。· 优化用前缀和快速计算 newUp用后缀和快速计算 newDown避免遍历求和将复杂度从 O(n·m²) 降至 O(n·m)。---Java 实现空间优化版 O(m)javaclass Solution {private static final int MOD 1_000_000_007;public int zigZagArrays(int n, int l, int r) {int m r - l 1; // 取值个数// 初始化长度为 1 的情况每个值都可以作为起点long[] up new long[m];long[] down new long[m];for (int i 0; i m; i) {up[i] 1;down[i] 1;}// 重复 n-1 次每次在末尾添加一个数for (int len 2; len n; len) {long[] newUp new long[m];long[] newDown new long[m];// 计算前缀和用于 newUplong prefixSum 0;for (int x 0; x m; x) {newUp[x] prefixSum; // sum of down[0..x-1]prefixSum (prefixSum down[x]) % MOD;}// 计算后缀和用于 newDownlong suffixSum 0;for (int x m - 1; x 0; x--) {newDown[x] suffixSum; // sum of up[x1..m-1]suffixSum (suffixSum up[x]) % MOD;}up newUp;down newDown;}// 答案所有 up 和 down 之和long ans 0;for (int i 0; i m; i) {ans (ans up[i] down[i]) % MOD;}return (int) ans;}}另一种写法滚动数组 前缀和数组使用 prefixSums 和 suffixSums 辅助计算javaclass Solution {private static final int MOD 1_000_000_007;public int zigZagArrays(int n, int l, int r) {int m r - l 1;int[] up new int[m];int[] down new int[m];int[] prefixUp new int[m 1];int[] prefixDown new int[m 1];for (int j 0; j m; j) {up[j] 1;down[j] 1;prefixUp[j 1] (prefixUp[j] up[j]) % MOD;prefixDown[j 1] (prefixDown[j] down[j]) % MOD;}for (int i 1; i n; i) {int[] newUp new int[m];int[] newDown new int[m];int[] newPrefixUp new int[m 1];int[] newPrefixDown new int[m 1];for (int j 0; j m; j) {// 上升前一步下降且值 jnewUp[j] (j 0) ? prefixDown[j] : 0; // prefixDown[j] sum(down[0..j-1])// 下降前一步上升且值 jnewDown[j] (j 1 m) ? (prefixUp[m] - prefixUp[j 1] MOD) % MOD : 0;newPrefixUp[j 1] (newPrefixUp[j] newUp[j]) % MOD;newPrefixDown[j 1] (newPrefixDown[j] newDown[j]) % MOD;}up newUp;down newDown;prefixUp newPrefixUp;prefixDown newPrefixDown;}return (prefixUp[m] prefixDown[m]) % MOD;}}复杂度· 时间复杂度O(n·m)· 空间复杂度O(m)

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号