238. 除自身以外数组的乘积
作者:
名字是乱打的 | 来源:发表于
2021-11-13 20:16 被阅读0次
一. 题目:
二.思路:
- 把当前数组分成数字左边和数字右边两个部分
- 然后进行两次遍历
- 第一次遍历求出当前数字左边数字的积
- 第二次遍历求出当前数字右边数字的积
- 注意,好好利用一个初始乘积为1,然后左边的积就从左边开始,右边的积是用右边开始
- 参考如下
原数组: [1 2 3 4]
左部分的乘积: 1 1 1*2 1*2*3
右部分的乘积: 2*3*4 3*4 4 1
结果: 1*2*3*4 1*3*4 1*2*4 1*2*3*1
三 .代码:
class Solution {
public int[] productExceptSelf(int[] nums) {
int[] res=new int[nums.length];
//当前数字左边的总的积
int currLeftAll=1;
//左边的积
for (int i = 0; i < nums.length; i++) {
res[i]=currLeftAll;
currLeftAll*=nums[i];
}
int currRightAll=1;
//右变的积
for (int i = nums.length-1; i >=0 ; i--) {
res[i]*=currRightAll;
currRightAll*=nums[i];
}
return res;
}
}
本文标题:238. 除自身以外数组的乘积
本文链接:https://www.haomeiwen.com/subject/mymzzltx.html
网友评论