构建乘积数组

解题思路:

  1. 当前元素为 1,乘以 1 不影响最终结果;

  2. 第一次循环得到当前下标前面的所有元素的乘积;

  3. 第二次循环反向遍历得到的是当前下标后面的所有元素的乘积;

图解:

复杂度:

  1. 时间复杂度:O(N),其中 N 为数组长度,两轮遍历数组 a,使用 O(N);

  2. 空间复杂度:O(1),使用常数大小额外空间;

代码实现:

function constructArr(arr: number[]): number[] {
  let res = [];

  let tmp = 1;
  for (let index = 0; index < arr.length; index++) {
    res[index] = tmp;
    tmp *= arr[index];
  }

  tmp = 1;
  for (let index = arr.length - 1; index >= 0; index--) {
    res[index] *= tmp;
    tmp *= arr[index];
  }

  return res;
};
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 构建乘积数组
  2. 2. 解题思路:
  3. 3. 图解:
  4. 4. 复杂度:
  5. 5. 代码实现: