重庆企业网站建站,泰安建设厅网站,中企动力服务怎么样,网站改版html238. 除自身以外数组的乘积
给你一个整数数组 nums#xff0c;返回 数组 answer #xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请 不要使用除法#…238. 除自身以外数组的乘积
给你一个整数数组 nums返回 数组 answer 其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请 不要使用除法且在 O(n) 时间复杂度内完成此题。
示例 1:
输入: nums
[1,2,3,4]
输出:
[24,12,8,6] 今天刷的是这道题说下大概的思路首先定义一个数组answer[]answer[i]表示元素nums[i]左侧所有元素的乘积现在只需将answer[]里的每个元素再乘其在nums[i]右侧所有元素乘积即为本题要求解的数组
代码如下所示
class Solution {public int[] productExceptSelf(int[] nums) {int length nums.length;int[] answer new int[length];// answer[i]等于nums中除nums[i]其左侧乘积answer[0] 1;for (int i 1; i length; i) {answer[i] answer[i - 1] * nums[i - 1];}// R表示nums[i]右侧的乘积int R 1;for (int i length - 1; i 0; i--) {// 从右往左遍历answer依次乘R最后answer[i]就等于nums中除// nums[i]之外的乘积answer[i] answer[i] * R;R R * nums[i];}return answer;}
}
题目链接题单 - 力扣LeetCode全球极客挚爱的技术成长平台