(leetcode) 238. Product of Array Except Self My Submissions QuestionEditorial Solution
2016-04-09 13:27
561 查看
Given an array of n integers where n > 1,
return an array
equal to the product of all the elements of
Solve it without division and in O(n).
For example, given
Follow up:
Could you solve it with constant space complexity? (Note: The output array does not count as extra space for the purpose of space complexity analysis.)
思路:如果这个数组中有大于等于2个0的时候,肯定都是0,如果这个数组中只有一个0,那么除这个为0的位置外,别的位置都为0,对于没有0的情况,先把所以数存起来,当前位置的值,等于乗起来的值除以当前的值。
代码如下(已通过leetcode)
public class Solution {
public int[] productExceptSelf(int[] nums) {
int count0=0;
for(int i=0;i<nums.length;i++)
if(nums[i]==0) count0++;
if(count0>=2) {
for(int i=0;i<nums.length;i++)
nums[i]=0;
} else {
if(count0==1) {
int tempmul=1;
for(int i=0;i<nums.length;i++)
if(nums[i]!=0) tempmul=tempmul*nums[i];
for(int i=0;i<nums.length;i++)
if(nums[i]==0) nums[i]=tempmul;
else nums[i]=0;
} else {
int tempmul=1;
for(int i=0;i<nums.length;i++)
tempmul=tempmul*nums[i];
for(int i=0;i<nums.length;i++)
nums[i]=tempmul/nums[i];
}
}
return nums;
}
}
nums,
return an array
outputsuch that
output[i]is
equal to the product of all the elements of
numsexcept
nums[i].
Solve it without division and in O(n).
For example, given
[1,2,3,4], return
[24,12,8,6].
Follow up:
Could you solve it with constant space complexity? (Note: The output array does not count as extra space for the purpose of space complexity analysis.)
思路:如果这个数组中有大于等于2个0的时候,肯定都是0,如果这个数组中只有一个0,那么除这个为0的位置外,别的位置都为0,对于没有0的情况,先把所以数存起来,当前位置的值,等于乗起来的值除以当前的值。
代码如下(已通过leetcode)
public class Solution {
public int[] productExceptSelf(int[] nums) {
int count0=0;
for(int i=0;i<nums.length;i++)
if(nums[i]==0) count0++;
if(count0>=2) {
for(int i=0;i<nums.length;i++)
nums[i]=0;
} else {
if(count0==1) {
int tempmul=1;
for(int i=0;i<nums.length;i++)
if(nums[i]!=0) tempmul=tempmul*nums[i];
for(int i=0;i<nums.length;i++)
if(nums[i]==0) nums[i]=tempmul;
else nums[i]=0;
} else {
int tempmul=1;
for(int i=0;i<nums.length;i++)
tempmul=tempmul*nums[i];
for(int i=0;i<nums.length;i++)
nums[i]=tempmul/nums[i];
}
}
return nums;
}
}
相关文章推荐
- java中调用xml的方法:DocumentBuilderFactory
- Building bitcoind on windows(bitcoin 0.8.6 0.9.4 0.10.0)
- iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束
- [fluentd学习]安装使用
- 2013年山东省第四届ACM大学生程序设计竞赛:Rescue The Princess
- Code Sign error: No matching provisioning profile found: Your build settings specify a provisioni...
- iOS开发 ☞ UINavigationController详解
- 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题
- 杭电oj-1047-Integer Inquiry
- UITableViewCell上添加按钮区分点击方法
- 第七季:CGI---UEFI下的终极Ghost利器
- 第六季:制作UEFI-U盘PE
- 第五季:在UEFI+GPT模式下安装Windows 8.1
- 第四季 在UEFI+GPT模式下用GHOST安装系统
- 山东省第四届 A Rescue The Princess
- 第三季:UEFI SecureBoot ESP MSR等相关名词解释
- 第二季:在UEFI+GPT模式下用U安装系统
- 第一季:在UEFI+GPT模式下用光盘安装系统
- 话说ReferenceQueue
- 获取用户最后点击视图(UIWindow的封装)