leetcode Product of Array Except Self
来源:互联网 发布:php不支持mysql 编辑:程序博客网 时间:2024/04/29 09:24
/*
时间要求是O(n),可以这样遍历数组,从前往后和
从后往前,sum_pre[i]表示从数组第一个数开始到第i
个数的乘积即nums[0]*nums[1]...nums[i],sum_back[i]
表示从数组末位数字开始nums[len-1]*nums[len-2]...nums[i]
的乘积,这样对于最终的结构数组ans[i]=sum_pre[i-1]*sum_back[i+1]
这里应该保证i-1>=0&&i+1<=len-1,如果i=0&&i+1<=len-1,则ans[i]=sum_back[i+1]
如果i-1>=0&&i+1=len-1则ans[i]=sum_pre[i-1],如果i=0&&i==len-1,也就是nums
数组只有一个元素,则ans[i]=0;
*/
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int len=nums.size();
vector<int> sum_pre;
sum_pre.resize(len);
vector<int> sum_back;
sum_back.resize(len);
vector<int> ans;
ans.resize(len);
sum_pre[0]=nums[0];
for(int i=1;i<len;i++)
{
sum_pre[i]=sum_pre[i-1]*nums[i];
}
sum_back[len-1]=nums[len-1];
for(int i=len-2;i>=0;i--)
{
sum_back[i]=sum_back[i+1]*nums[i];
}
for(int i=0;i<len;i++)
{
if(i-1>=0&&i+1<=len-1) ans[i]=sum_pre[i-1]*sum_back[i+1];
else if(i==0&&len>=2) ans[i]=sum_back[i+1];
else if(i>=1&&i==len-1) ans[i]=sum_pre[i-1];
else ans[i]=0;
}
return ans;
}
};
时间要求是O(n),可以这样遍历数组,从前往后和
从后往前,sum_pre[i]表示从数组第一个数开始到第i
个数的乘积即nums[0]*nums[1]...nums[i],sum_back[i]
表示从数组末位数字开始nums[len-1]*nums[len-2]...nums[i]
的乘积,这样对于最终的结构数组ans[i]=sum_pre[i-1]*sum_back[i+1]
这里应该保证i-1>=0&&i+1<=len-1,如果i=0&&i+1<=len-1,则ans[i]=sum_back[i+1]
如果i-1>=0&&i+1=len-1则ans[i]=sum_pre[i-1],如果i=0&&i==len-1,也就是nums
数组只有一个元素,则ans[i]=0;
*/
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int len=nums.size();
vector<int> sum_pre;
sum_pre.resize(len);
vector<int> sum_back;
sum_back.resize(len);
vector<int> ans;
ans.resize(len);
sum_pre[0]=nums[0];
for(int i=1;i<len;i++)
{
sum_pre[i]=sum_pre[i-1]*nums[i];
}
sum_back[len-1]=nums[len-1];
for(int i=len-2;i>=0;i--)
{
sum_back[i]=sum_back[i+1]*nums[i];
}
for(int i=0;i<len;i++)
{
if(i-1>=0&&i+1<=len-1) ans[i]=sum_pre[i-1]*sum_back[i+1];
else if(i==0&&len>=2) ans[i]=sum_back[i+1];
else if(i>=1&&i==len-1) ans[i]=sum_pre[i-1];
else ans[i]=0;
}
return ans;
}
};
0 0
- [leetcode][array] Product of Array Except Self
- 【LeetCode】237 Product of Array Except Self
- #leetcode#Product of Array Except Self
- leetcode 238: Product of Array Except Self
- [leetcode] 238.Product of Array Except Self
- [leetcode] Product of Array Except Self
- LeetCode Product of Array Except Self
- leetCode(43):Product of Array Except Self
- LeetCode Product of Array Except Self
- 【leetcode】Product of Array Except Self
- 【leetcode】Product of Array Except Self
- leetcode: Product of Array Except Self
- [leetcode] Product of Array Except Self
- [LeetCode] Product of Array Except Self
- Leetcode: Product of Array Except Self
- LeetCode 238: Product of Array Except Self
- LeetCode-Product of Array Except Self
- Leetcode #238 Product of Array Except Self
- IE浏览器连不上网电脑无法联网
- Gatling-基于Scala,Akka&Netty的性能测试框架
- 使用hexo时deploy部署网站到github或gitcafe的gitpages时重复输入用户名密码的解决办法
- s3c6410的GPIO驱动总结
- Android下拉/上拉刷新ListView之Android-PullToRefresh
- leetcode Product of Array Except Self
- 在Xcode7/7.1中使用Http请求
- 用反射的方式获取父类中的所有属性和方法
- as通过gradle实现多渠道打包+使用配置文件进行版本管理+指定apk输出路径和apk文件名
- Java逻辑运算符"&","&&","|","||"
- Mac下android开发环境的搭建
- OpenGL: 渲染管线理论详解
- 解决360浏览器打开xbap文件,提示下载问题
- UIScrollView的属性总结