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; } };

相关新闻

最新新闻

AI Agent智能体实战教程:基于LangChain与LangGraph构建规划与工具调用能力

AI Agent智能体实战教程:基于LangChain与LangGraph构建规划与工具调用能力

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一个关于 AI Agent 智能体的综合教程项目。它不是一个单一的模型,而是一套围绕 LangChain、LangGraph 等主流…

2026/7/9 19:17:49
STM32 DS18B20 多点测温实战:1条总线挂载3个传感器与ROM搜索算法

STM32 DS18B20 多点测温实战:1条总线挂载3个传感器与ROM搜索算法

STM32 DS18B20 多点测温实战:1条总线挂载3个传感器与ROM搜索算法在工业温室监控、机房温度巡检等场景中,分布式温度监测系统往往需要同时采集多个位置的温度数据。传统单传感器方案需要占用大量GPIO资源,而DS18B20凭借其独特的单总线协议&…

2026/7/9 19:17:49
如何为hinic3驱动贡献代码?开源项目参与指南与流程解析

如何为hinic3驱动贡献代码?开源项目参与指南与流程解析

如何为hinic3驱动贡献代码?开源项目参与指南与流程解析 【免费下载链接】hinic3 provide Huawei Intelligent Network Interface Card driver for openEuler LTS version. 项目地址: https://gitcode.com/openeuler/hinic3 前往项目官网免费下载:…

2026/7/9 19:17:49
5分钟掌握iFakeLocation:无需越狱的iOS虚拟定位终极指南

5分钟掌握iFakeLocation:无需越狱的iOS虚拟定位终极指南

5分钟掌握iFakeLocation:无需越狱的iOS虚拟定位终极指南 【免费下载链接】iFakeLocation Simulate locations on iOS devices on Windows, Mac and Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/if/iFakeLocation iFakeLocation是一款强大的跨平台开源…

2026/7/9 19:17:49
HeteroFusedKernels架构解密:一文读懂异构计算下的高效数据传输实现

HeteroFusedKernels架构解密:一文读懂异构计算下的高效数据传输实现

HeteroFusedKernels架构解密:一文读懂异构计算下的高效数据传输实现 【免费下载链接】HeteroFusedKernels A heterogeneous hardware acceleration library focused on efficient KV cache transfer operators (H2D/D2H), designed for large model training and in…

2026/7/9 19:17:49
UNT开发者指南:从源码编译到贡献代码的全流程攻略

UNT开发者指南:从源码编译到贡献代码的全流程攻略

UNT开发者指南:从源码编译到贡献代码的全流程攻略 【免费下载链接】UNT User-defined-function Native Tool. 项目地址: https://gitcode.com/openeuler/UNT 前往项目官网免费下载:https://ar.openeuler.org/ar/ UNT(User-defined-fu…

2026/7/9 19:12:48

月新闻