赞
踩
238. 除自身以外数组的乘积 - 力扣(LeetCode)
思路:
因为不可以使用除法,所以可以分两步进行。
第一步,算出当前位置之前(不包括当前数字)所有数字的乘积,记录到答案数组。
第二步,算出当前位置之后(不包括当前数字)所有数字的乘积,乘到答案数组中。
总结:
当前位置需要同时用到前缀和后缀,可以分两步进行。这里的前后缀可以是乘积、和、最值。
代码:
- class Solution {
- public int[] productExceptSelf(int[] nums) {
- int n = nums.length;
- int[] ans = new int[n];
- int t = 1;
- // 第一步:当前位置之前,不包括当前数字的所有数字的乘积
- for(int i = 0; i < n; i++) {
- // 记录到答案数组中
- ans[i] = t;
- t *= nums[i];
- }
- t = 1;
- // 第二步:当前位置之后,不包括当前数字的所有数字的乘积
- for(int i = n - 1; i >= 0; i--) {
- // 乘到答案数组中
- ans[i] *= t;
- t *= nums[i];
- }
- return ans;
- }
- }
参考:
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。