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

【简单】不包含本位置值的累乘数组-Java:进阶问题

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程大家好!欢迎来到我的网站! 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑,人工智能时代就要来临了,科… 继续阅读 前言https://www.captainai.net/troubleshooter

package live.every.day.ProgrammingDesign.CodingInterviewGuide.ArrayAndMatrix; import java.util.Arrays; /** * 不包含本位置值的累乘数组 * * 【题目】 * 给定一个整型数组arr,返回不包含本位置值的累乘数组。 * 例如,arr=[2,3,1,4],返回[12,8,24,6],即除自己外,其他位置上的累乘。 * * 【要求】 * 1.时间复杂度为O(N)。 * 2.除需要返回的结果数组外,额外空间复杂度为O(1)。 * * 【进阶题目】 * 对时间和空间复杂度的要求不变,而且不可以使用除法。 * * 【难度】 * 简单 * * 【解答】 * 不能使用除法的情况下,可以用以下方法实现进阶问题: * 1.生成两个长度和arr一样的新数组lr[]和rl[]。lr[]表示从左到右的累乘(即lr[i]=arr[0..i])的累乘。rl表示从右到左的 * 累乘(即rl[i]=arr[i..N-1])的累乘。 * 2.一个位置上除去自己值的累乘,就是自己左边的累乘再乘以自己右边的累乘,即res[i]=lr[i-1]*rl[i+1]。 * 3.最左的位置和最右位置的累乘比较特殊,即res[0]=rl[1],res[N-1]=lr[N-2]。 * 以上思路虽然可以得到结果res,但是除res之外,又使用了两个额外数组,怎么省掉这两个额外数组呢?可以通过res数组复用的方 * 式。也就是说,先把res数组作为辅助计算的数组,然后把res调整成结果数组返回。具体过程请参看如下代码中的product2方法。 * * @author Created by LiveEveryDay */ public class NotContainCurrentCumulativeProductArray2 { public static int[] product2(int[] arr) { if (arr == null || arr.length < 2) { return null; } int[] res = new int[arr.length]; res[0] = arr[0]; for (int i = 1; i < arr.length; i++) { res[i] = res[i - 1] * arr[i]; } int tmp = 1; for (int i = arr.length - 1; i > 0; i--) { res[i] = res[i - 1] * tmp; tmp *= arr[i]; } res[0] = tmp; return res; } public static void main(String[] args) { int[] arr = {-4, 3, -2, 5, -7, 1, 6}; int[] res = product2(arr); System.out.printf("The array is: %s", Arrays.toString(res)); } } // ------ Output ------ /* The array is: [1260, -1680, 2520, -1008, 720, -5040, -840] */
http://www.cnnetsun.cn/news/2077484.html

相关文章:

  • 终极NHS UK Frontend教程:3步构建专业医疗网站界面
  • 项目安全问题——前端两步完成加密
  • HyperAgents框架:构建具备思考-行动循环的LLM智能体实战指南
  • 全同态加密与AI Agent融合:构建隐私优先的去中心化预测系统
  • 打造开箱即用的终端代码编辑器:基于Micro的轻量级开发环境实践
  • Hayase社区参与指南:如何加入讨论、报告问题和提出建议
  • 云原生运维代理TAT Agent:Rust构建的自动化命令执行利器
  • Symfony Inflector 测试用例完全解析:掌握300+单词转换规则
  • Jazz社区生态建设:如何参与开源贡献和推动项目发展
  • 木及简历证件照功能深度评测:打破传统模板约束的创新设计
  • 从瀑布流到无尽隧道:5个用Unity UV动画就能实现的酷炫2D/3D效果(保姆级教程)
  • LeaderF缓冲区管理完全指南:快速切换和搜索打开的文件
  • Lang-Agent:基于LangGraph的可视化AI Agent开发平台实战指南
  • USBbuildingFootprints性能优化:处理大规模地理数据集的10个技巧
  • iOS键盘遮挡终极解决方案:TPKeyboardAvoiding三大组件深度解析
  • SpringBoot+Vue网上订餐系统源码+论文
  • 3步打通Syft跨团队协作:从代码提交到SBOM交付的无缝协作指南
  • 在 SAP Gateway 的 Function Import 里传长字符串,真正容易卡住的地方,不在 Edm.String
  • 仅限本周开放!VSCode日志插件性能调优白皮书(含CPU占用下降62%、内存泄漏修复Patch)
  • 如何将你的项目服务配置托管到Nacos配置中心?一文讲透
  • 手把手教你用Docker Compose配置HedgeDoc,避开数据库连接和端口映射的那些坑
  • 为什么92%的嵌入式工程师在大模型移植中踩坑?:曝光未公开的C语言ABI对齐陷阱、栈溢出隐蔽路径与中断冲突根源
  • 【转载】高性能漏洞扫描器afog介绍及使用
  • OpenOmniBot:构建具备规划、执行与记忆能力的通用AI智能体框架
  • Metso Valmet A413052电路板模块
  • 3步掌握专业手机号码定位工具:高效查询电话号码真实位置
  • 2025_NIPS_UI-Genie: A Self-Improving Approach for Iteratively Boosting MLLM-based Mobile GUI Agents
  • 别让PICkit3.5+吃灰了!手把手教你激活硬件仿真,搞定485通讯调试难题
  • ESP32蓝牙音频终极指南:如何用简单代码实现专业级音乐接收器和发送器
  • SanityHarness:前端应用健康检查与健全性测试实践指南