给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。
示例:
输入: [1,2,3,4]
输出: [24,12,8,6]
说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。
进阶:
你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组不被视为额外空间。)
在真实的面试中遇到过这道题?
是
否
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/product-of-array-except-self
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
public class Solution {
public int[] ProductExceptSelf(int[] nums) {
int n=nums.Length;
int []output=new int[n];
for(int i=0;i<n;i++)
{
int j=0;
output[i]=1;
while(j<n)
{
if(j==i)
j++;
output[i]*=nums[j];
if(++j==i)
j++;
}
}
return output;
}
}
public class Solution {
public int[] ProductExceptSelf(int[] nums)
{
int n = nums.Length;
int[] output1 = new int[n];
int []output2=new int [n];
output1[0] = 1;
output2[n-1]=1;
for (int i = 1; i < n; i++)
{
output1[i] =output1[i-1]* nums[i - 1];
}
for (int i = n - 2; i >= 0; i--)
{
output2[i]=output2[i+1]*nums[i+1];
}
for(int i=0;i<n;i++)
{
output1[i]*=output2[i];
}
return output1;
}
}
public class Solution {
public int[] ProductExceptSelf(int[] nums)
{
int n = nums.Length;
int[] output = new int[n];
// int []output2=new int [n];
// output1[0] = 1;
// output2[n-1]=1;
int k=1;
for (int i = 0; i < n; i++)
{
output[i]=k;
k*=nums[i];
}
k=1;
for (int i = n - 1; i >= 0; i--)
{
output[i]*=k;
k*=nums[i];
}
// for(int i=0;i<n;i++)
// {
// output1[i]*=output2[i];
// }
return output;
}
}