题目描述:

给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。

思路分析:

思路一:由于不能使用除法,首先想到的就是对于A中每个元素用遍历的方式,去判断是否要乘到B数组的对应位置,这样的时间复杂度为O(n^2),超时。

思路二:用空间换时间,将B的构造分为两段,第一段为0到i-1,第二段为i+1到n,那么在构造第一段时,从前往后构造,B[i]=B[i-1]*A[i-1];构造第二段时,从后往前构造,B[i]=B[i+1]*A[i+1]。最后将两段乘起来,即为最终所求的数组。

代码:

 class Solution {
public:
vector<int> multiply(const vector<int>& A) {
int len = A.size();
if(len<=)
return A;
vector<int> B(len, );
vector<int> tmp(len, );
for(int i=; i<len; i++)
B[i] = B[i-]*A[i-];
for(int i=len-; i>=; i--)
tmp[i] = tmp[i+]*A[i+];
for(int i=; i<len; i++)
B[i] = B[i]*tmp[i];
return B;
}
};

最新文章

  1. Python之路 day2 字符串/元组/列表/字典互转
  2. 用例设计工具PICT — 输入组合覆盖
  3. 通过FTP连接Azure上的网站
  4. shell 删除文件下的* (copy).jpg备份文件
  5. SharePoint API测试系列——Records.BypassLocks测试
  6. iOS字符串加密至MD5&amp;及获取文件MD5
  7. Android圆形图片--ImageView
  8. numa对MySQL多实例性能影响
  9. Eclipse TypeScript 安装
  10. [STM32F429-DISCO-HAL]2.先学会点亮LED和使用LCD。。。
  11. javascript方法的方法名慎用close
  12. ios、移动端 input type=date无法点击的问题解决方法
  13. 异步请求引发的Chrome死锁
  14. linux中,使用cat、head、tail命令显示文件指定行
  15. hibernate框架学习之数据查询(本地SQL)
  16. Struts初步入门(四)
  17. Delphi中Json格式读写
  18. Linq to Sql 动态条件另类实现方法
  19. Space Ant(极角排序)
  20. C#设计模式--模板方法模式(学习Learning hard 设计模式笔记)

热门文章

  1. 在vue组件中访问vuex模块中的getters/action/state
  2. centos7.6在线yum安装docker-ce
  3. 关于Spring IOC (DI-依赖注入)你需要知道的一切
  4. VMware15.5版本安装CentOS7
  5. 日常工具集和技巧分享(Linux向)
  6. Python的logging模块详解
  7. 攻防世界WEB高手进阶之Zhuanxv
  8. [转]Linux-虚拟网络设备-tun/tap
  9. 2019-2020-1 20199301《Linux内核原理与分析》第九周作业
  10. EventWaitHandle 第一课