题目描述:
解决思路:
注意一下两条语句:
代码:
class Solution {
public int[] productExceptSelf(int[] nums) {
int len=nums.length;
int []left=new int[len];
int []right=new int[len];
int []ans=new int[len];
left[0]=1;
right[len-1]=1;
for (int i = 1,j= len-2;i < len&&j>=0; i++,j--) {
left[i]=nums[i-1]*left[i-1];
right[j]=nums[j+1]*right[j+1];
}
System.out.println(Arrays.toString(left));
System.out.println(Arrays.toString(right));
for (int i = 0; i < len; i++) {
ans[i]=right[i]*left[i];
}
return ans;
}
}
改进:
输出一个数组不算空间复杂度,那就利用这个数组当LorR的某部分,代码如下:
class Solution {
public int[] productExceptSelf(int[] nums) {
int len=nums.length;
int []ans=new int[len];
ans[0]=1;
for (int i = 1;i < len; i++) {
ans[i]=nums[i-1]*ans[i-1];
}
int R=1;
for (int j = len-1; j >= 0; j--) {
ans[j]=ans[j]*R;
R=R*nums[j];
}
return ans;
}
}
分步运用数组!