原文链接: https://leetcode-cn.com/problems/product-of-array-except-self
英文原文
Given an integer array nums
, return an array answer
such that answer[i]
is equal to the product of all the elements of nums
except nums[i]
.
The product of any prefix or suffix of nums
is guaranteed to fit in a 32-bit integer.
You must write an algorithm that runs in O(n)
time and without using the division operation.
Example 1:
Input: nums = [1,2,3,4] Output: [24,12,8,6]
Example 2:
Input: nums = [-1,1,0,-3,3] Output: [0,0,9,0,0]
Constraints:
2 <= nums.length <= 105
-30 <= nums[i] <= 30
- The product of any prefix or suffix of
nums
is guaranteed to fit in a 32-bit integer.
Follow up: Can you solve the problem in O(1)
extra space complexity? (The output array does not count as extra space for space complexity analysis.)
中文题目
给你一个长度为 n 的整数数组 nums
,其中 n > 1,返回输出数组 output
,其中 output[i]
等于 nums
中除 nums[i]
之外其余各元素的乘积。
示例:
输入:[1,2,3,4]
输出:[24,12,8,6]
提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。
说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。
进阶:
你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组不被视为额外空间。)
通过代码
高赞题解
class Solution {
public int[] productExceptSelf(int[] nums) {
int[] res = new int[nums.length];
int k = 1;
for(int i = 0; i < res.length; i++){
res[i] = k;
k = k * nums[i]; // 此时数组存储的是除去当前元素左边的元素乘积
}
k = 1;
for(int i = res.length - 1; i >= 0; i--){
res[i] *= k; // k为该数右边的乘积。
k *= nums[i]; // 此时数组等于左边的 * 该数右边的。
}
return res;
}
}
Java开发、c++开发、前端开发、客户端开发、测试开发,只要是技术人,2021\2022我们都要
后端tl:
人美心善,经常带我们出去玩
典型的护犊子系列
强推该老板,有想来的,你不会吃亏、不会上当。
质量团队tl
另外质量团队老板真的很帅、很年轻
没有经验怎么办?
手把手教学、手把手指导
面试体验极佳,试过的都说好~
最后,我们hc真的很多,基本上现在面试过了都会发offer的,不存在排队一说
毕竟新财年新定位、闲鱼不再只是做闲鱼
一线主管真的很nice,强推一个
说了这么多,口有点渴,去西湖喝口水
想投简历的请发邮件到xiaojiang.ll@alibaba-inc.com
也可以加微信just_love_think
统计信息
通过次数 | 提交次数 | AC比率 |
---|---|---|
149454 | 206291 | 72.4% |
提交历史
提交时间 | 提交结果 | 执行时间 | 内存消耗 | 语言 |
---|
相似题目
题目 | 难度 |
---|---|
接雨水 | 困难 |
乘积最大子数组 | 中等 |
粉刷房子 II | 困难 |