lintcode:Product of Array Exclude Itself
2015-10-14 20:49
393 查看
Given an integers array A.
Define B[i] = A[0] * … * A[i-1] * A[i+1] * … * A[n-1], calculate B WITHOUT divide operation.
Example
For A = [1, 2, 3], return [6, 3, 2].
AC时间是62ms.时间复杂度O(n^2)
AC时间12ms。空间复杂度O(N),时间复杂度O(n)
左右搜索
Define B[i] = A[0] * … * A[i-1] * A[i+1] * … * A[n-1], calculate B WITHOUT divide operation.
Example
For A = [1, 2, 3], return [6, 3, 2].
1.提交1
class Solution { public: /** * @param A: Given an integers array A * @return: A long long array B and B[i]= A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1] */ vector<long long> productExcludeItself(vector<int> &nums) { // write your code here vector<long long> res; for(int i=0;i<nums.size();i++){ long long product=1; for(int j=0;j<nums.size();j++){ if(j!=i){ product*=nums[j]; } } res.push_back(product); } return res; } };
AC时间是62ms.时间复杂度O(n^2)
2.提交2
class Solution { public: /** * @param A: Given an integers array A * @return: A long long array B and B[i]= A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1] */ vector<long long> productExcludeItself(vector<int> &nums) { // write your code here int n=nums.size(); long long left ; long long right ; left[0]=1; for(int i=1;i<n;i++){ left[i]=left[i-1]*nums[i-1]; } right[n-1]=1; /*for(int i=0;i<n-1;i++){ right[i]=right[i+1]*nums[i+1]; }*/ for(int i=n-2;i>=0;i--){ right[i]=right[i+1]*nums[i+1]; } vector<long long> res; for(int i=0;i<n;i++){ res.push_back(left[i]*right[i]); } return res; } };
AC时间12ms。空间复杂度O(N),时间复杂度O(n)
左右搜索
相关文章推荐
- 第七周 项目4-队列数组
- 再战传世推广文本(请复制下面红色字体部分)
- Javascript基础(二)
- Hadoop 文件追加(断点继传)
- Get stream replication state from standby
- Ubuntu14.04桌面版gedit中文乱码解决办法
- UI - SendValue
- 快速熟悉项目代码
- 梯度下降法,最小二乘法求线性回归
- [转]Apache Ignite——新一代数据库缓存系统
- Android SDK - Gradle插件安装方法
- java里面的文件上传与下载
- Handler总结
- 记录学习Python过程中的各种坑
- B题 - A+B for Input-Output Practice (I)
- 采样一致性算法
- 南邮OJ 1012进制转换
- 无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开”。
- PostgreSQL 多字节字符集合法性检测
- Fiddler 扩展——添加工具菜单