资讯动态

16 除了自身以外数组的乘积

发布时间:2026/8/9 13:12:00 来源:尧图企业网站定制
给你一个整数数组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]提示2 nums.length 105-30 nums[i] 30输入保证数组answer[i]在32 位整数范围内进阶你可以在O(1)的额外空间复杂度内完成这个题目吗 出于对空间复杂度分析的目的输出数组不被视为额外空间。思路1、记录从左往右连续的乘积l_nums[i]就等于前i个数的连续乘积不包含nums[i]。2、记录从右往左的连续乘积r_nums[i]就等于后i个数的连续乘积不包含nums[i]。3、答案ans[i]l_nums[i] * r_nums[i]。class Solution { public: vectorint productExceptSelf(vectorint nums) { int nnums.size(); if(n2) return nums; vectorint ans(n,1); vectorint l_nums(n,1); vectorint r_nums(n,1); int _temp1; for(int i1;in;i){ l_nums[i]_temp*nums[i-1]; _temp*nums[i-1]; } _temp1; for(int in-2;i0;i--){ r_nums[i]_temp*nums[i1]; _temp*nums[i1]; } for(int i0;in;i){ ans[i]l_nums[i]*r_nums[i]; } return ans; } };推荐一个零声教育学习教程个人觉得老师讲得不错分享给大家[LinuxNginxZeroMQMySQLRedisfastdfsMongoDBZK流媒体CDNP2PK8SDockerTCP/IP协程DPDK等技术内容点击立即学习:链接

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价