LeetCode238:乘积除自身的高效解法 LeetCode238给你一个整数数组nums返回 数组answer其中answer[i]等于nums中除了nums[i]之外其余各元素的乘积 。题目数据保证数组nums之中任意元素的全部前缀元素和后缀的乘积都在32 位整数范围内。请不要使用除法且在O(n)时间复杂度内完成此题。示例 1:输入:nums [1,2,3,4]输出:[24,12,8,6]示例 2:输入:nums [-1,1,0,-3,3]输出:[0,0,9,0,0]Python解法1.双数组class Solution: def productExceptSelf(self, nums: List[int]) - List[int]: length len(nums) L, R, res [0]*length, [0]*length, [0]*length L[0] 1 for i in range(1, length): L[i] nums[i - 1] * L[i - 1] R[length - 1] 1 for i in reversed(range(length - 1)): R[i] nums[i 1] * R[i 1] for i in range(length): res[i] L[i] * R[i] return res2.优化class Solution: def productExceptSelf(self, nums: List[int]) - List[int]: n len(nums) res [1] * n # 左指针计算左侧乘积 left 1 for i in range(n): res[i] left left * nums[i] # 右指针计算右侧乘积并相乘 right 1 for j in range(n - 1, -1, -1): res[j] * right right * nums[j] return resJava解法1.双数组class Solution { public int[] productExceptSelf(int[] nums) { int len nums.length; int[] L new int[len]; int[] R new int[len]; int[] res new int[len]; L[0] 1; for(int i 1; i len; i){ L[i] nums[i - 1] * L[i - 1]; } R[len - 1] 1; for(int i len - 2; i 0; i--){ R[i] nums[i 1] * R[i 1]; } for(int i 0; i len; i){ res[i] L[i] * R[i]; } return res; } }2.优化class Solution { public int[] productExceptSelf(int[] nums) { int len nums.length; int[] res new int[len]; int left 1; for(int i 0; i len; i){ res[i] left; left * nums[i]; } int right 1; for(int i len - 1; i -1; i--){ res[i] * right; right * nums[i]; } return res; } }C解法1.双数组#include vector using namespace std; class Solution { public: vectorint productExceptSelf(vectorint nums) { int length nums.size(); vectorint L(length, 0); vectorint R(length, 0); vectorint res(length, 0); L[0] 1; for (int i 1; i length; i) { L[i] nums[i - 1] * L[i - 1]; } R[length - 1] 1; for (int i length - 2; i 0; --i) { R[i] nums[i 1] * R[i 1]; } for (int i 0; i length; i) { res[i] L[i] * R[i]; } return res; } };2.优化#include vector using namespace std; class Solution { public: vectorint productExceptSelf(vectorint nums) { int n nums.size(); vectorint res(n, 1); int left 1; for (int i 0; i n; i) { res[i] left; left * nums[i]; } int right 1; for (int j n - 1; j 0; --j) { res[j] * right; right * nums[j]; } return res; } };

相关新闻

最新新闻

MCP协议下多Agent共享持久化记忆实战:从概念到落地

MCP协议下多Agent共享持久化记忆实战:从概念到落地

当多个 AI Agent 开始协作完成复杂任务时,最先暴露的问题往往不是模型能力不够,而是“记忆”出了问题:每个 Agent 各记各的,上下文窗口很快被塞满,任务一重启重要信息全部丢失。最近在调研和落地多 Agent 系统时&#…

2026/8/30 3:52:55
Godot 4.x 中 GDScript Lambda 函数实战:回调、闭包与 Callable 应用

Godot 4.x 中 GDScript Lambda 函数实战:回调、闭包与 Callable 应用

在实际游戏项目中,回调逻辑经常会散落在各处:按钮点击、动画结束、HTTP 请求完成、数组排序条件,都需要把一段逻辑“交给另一个对象去调用”。Godot 4.x 的 GDScript 引入 Lambda 函数后,这类场景多了一种非常轻量的表达方式&…

2026/8/30 3:52:55
NIP 2:1 WBG:赛后采访揭示BP博弈与打野节奏的胜负手

NIP 2:1 WBG:赛后采访揭示BP博弈与打野节奏的胜负手

NIP 2:1 WBG 这场打完,赛后采访里最值得琢磨的不是“我们赢了”这套标准话术,而是打野 Guwon 那句“本来以为会轻松拿下,没想到微博的BP有备而来”。这句话的信息量比比分本身还大:赛前心态、BP 博弈、后续赛程的看点全在里面。如…

2026/8/30 3:52:55
从割草工具到智能运维终端:商业园林机器人的系统架构与工程落地解析

从割草工具到智能运维终端:商业园林机器人的系统架构与工程落地解析

这次融资事件,外界看到的是金额,做技术的人看到的则是另一层信息:商业园林机器人这个品类,正在从“能割草的遥控车”变成“绿地智能运维的终端节点”。根据公开材料,李泽湘投资过的这家商业园林机器人公司,…

2026/8/30 3:52:55
1965年的AI预言:从炼金术到大模型幻觉

1965年的AI预言:从炼金术到大模型幻觉

这周想聊的话题很“老”,但放在 2025 年看又格外应景:一份 1965 年的 PDF 文献,Hubert Dreyfus 写下的《Alchemy and AI》。你可能会想,一篇六十年前的论文,跟现在的大模型、Agent、AI 编程工具能有什么关系&#xff1…

2026/8/30 3:52:55
DeepSeek智能体要来了?开发者应提前掌握的Agent开发要点

DeepSeek智能体要来了?开发者应提前掌握的Agent开发要点

关于DeepSeek智能体要来了这个消息,最近讨论热度确实不低。最常被提到的信号,是DeepSeek的公众号已经完成注册认证。这个动作本身不复杂,但放在AI产品节奏里看,多少传递出一个方向:官方可能正在为智能体类产品或服务做…

2026/8/30 3:47:54