当前位置:   article > 正文

力扣HOT100 - 238. 除自身以外数组的乘积

力扣HOT100 - 238. 除自身以外数组的乘积

解题思路:

当前位置的结果就是它左部分的乘积再乘以它右部分的乘积。因此需要进行两次遍历,第一次遍历用于求左部分的乘积,第二次遍历在求右部分的乘积的同时,再将最后的计算结果一起求出来。

  1. class Solution {
  2. public int[] productExceptSelf(int[] nums) {
  3. int len = nums.length;
  4. if (len == 0)
  5. return new int[0];
  6. int[] ans = new int[len];
  7. ans[0] = 1;
  8. int tmp = 1;
  9. //左半部分乘积
  10. for (int i = 1; i < len; i++) {
  11. ans[i] = ans[i - 1] * nums[i - 1];
  12. }
  13. //右半部分乘积,巧妙地使用tmp
  14. for (int i = len - 2; i >= 0; i--) {
  15. tmp *= nums[i + 1];
  16. ans[i] *= tmp;
  17. }
  18. return ans;
  19. }
  20. }

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号