zoukankan      html  css  js  c++  java
  • Leetcode 238. Product of Array Except Self

    238. Product of Array Except Self                  

    Total Accepted: 51070           Total Submissions: 116543           Difficulty: Medium        

    Given an array of n integers where n > 1, nums, return an array output such that output[i] is equal to the product of all the elements of nums except nums[i].

    Solve it without division and in O(n).

    For example, given [1,2,3,4], return [24,12,8,6].

    Follow up: Could you solve it with constant space complexity? (Note: The output array does not count as extra space for the purpose of space complexity analysis.)

    思路:product存储的是所有不为0的数的积。注意有0、1、2个0的情况。

    (1) 有0个0:v[i]=product/nums[i];

    (2) 有1个0:nums[i]==0,v[i]=product;nums[i]!=0,v[i]=0;

    (3) 有2个0:任意i,v[i]=0

    代码:

     1 class Solution {
     2 public:
     3     vector<int> productExceptSelf(vector<int>& nums) {
     4         long long product=1;
     5         int i,num=0,pos=-1;
     6         for(i=0;i<nums.size();i++){
     7             if(nums[i]==0){
     8                num++;
     9                pos=i;
    10                continue;
    11             }
    12             product=product*nums[i];
    13         }
    14         vector<int> v(nums.size(),0);
    15         if(num==1){
    16             v[pos]=product;
    17         }
    18         if(num==0){
    19             for(i=0;i<nums.size();i++){
    20                 v[i]=product/nums[i];
    21             }
    22         }
    23         return v;
    24     }
    25 };
  • 相关阅读:
    操作系统概述总结
    string类的用法总结
    stack的简单用法总结
    递归用法总结
    C语言中常见的图形打印总结
    C++中list的用法总结
    STL中find和sort的用法总结
    unity Physics/Physics2DProjectSettings中LayerCollisionMatrix的存储方式
    UnityEvent<T> 系列化
    十字相乘法
  • 原文地址:https://www.cnblogs.com/Deribs4/p/5634190.html
Copyright © 2011-2022 走看看