当前位置:   article > 正文

238. 除自身以外数组的乘积

除自身以外数组的乘积

除自身之外的乘积,即可以将数组内所有元素相乘得到s,然后遍历到当前元素时,使用所有元素的乘积s/当前元素即可。

1. 首先获得数组中所有元素的乘积s,并记录数组中0的个数
2. 我们进入计算结果集,分为以下三种情况

      (1)如果数组中含有两个0,那么整个结果集必然为0,因为你无论撇弃那个元素最终的乘积都为0。

      (2)如果数组中含有一个0,那么结果集中除了当前位置,其余位置都为0,我们只需判断当前位置是否为0,不为零将s给它,否则就给0

      (3)如果数组中没有0,那么我们只需进行赋值nums[i] = s/nums[i]即可

      (4)最后返回nums[i]

  1. class Solution {
  2. public:
  3. vector<int> productExceptSelf(vector<int>& nums) {
  4. vector<int> ans;
  5. int s = 1;
  6. int flag = 0; // 标记0的个数
  7. // 计算整个数组的乘积,如果是0,不参与运算,如果数组中超过两个零的整个数组皆为0
  8. for(auto n:nums){
  9. if(n!=0){
  10. s*=n;
  11. }else{
  12. flag++;
  13. }
  14. if(flag>1){
  15. s = 0;
  16. break;
  17. }
  18. }
  19. for(int i=0;i<nums.size();i++){
  20. if(flag>=2){ // 如果含有两个0则整个结果集都为0
  21. nums[i] = 0;
  22. }else if(flag==1){ // 含有一个0的情况
  23. if(nums[i]==0){
  24. nums[i] = s;
  25. }else{
  26. nums[i] = 0;
  27. }
  28. }else{ // 没有0的情
  29. int t = nums[i];
  30. nums[i] = s/t;
  31. }
  32. }
  33. return nums;
  34. }
  35. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/818433
推荐阅读
相关标签
  

闽ICP备14008679号