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

    这题看似简单,不过两个要求很有意思:

    1、不准用除法:最开始我想到的做法是全部乘起来,一项项除,可是中间要是有个0,这做法死得很惨。

    2、空间复杂度O(1):题目说明了返回的那个数组不算进复杂度分析里面

    做法:既然不用除法,对于某个数i, result[i] = 0到i - 1的乘积  X    i + 1 到 n - 1的乘积

    具体来说,先正向遍历,result[i] 存储的是 0 到i - 1的乘积,再反向遍历,乘上另一半,这就同时满足了时间复杂度和空间复杂度的要求

    class Solution {
    public:
        vector<int> productExceptSelf(vector<int>& nums) {
            if(nums.empty())
                return vector<int>();
            vector<int> result(nums.size(), 1);
            int accums = 1;
            for(int i = 0; i < nums.size() ; i++){
                result[i] = accums;
                accums *= nums[i];
            }
            accums = 1;
            for(int i = nums.size() - 1; i >= 0; i--){
                result[i] *= accums;
                accums *= nums[i];
            }
            return result;
        }
    };
    

      

  • 相关阅读:
    mysql查询版本
    mysql导出bug备注
    linux查找文件
    linux 编译式安装nginx
    linux文件校验
    linux 编译式安装apache
    网络层
    数据链路层
    物理层
    servlet过滤器
  • 原文地址:https://www.cnblogs.com/hustxujinkang/p/4696483.html
Copyright © 2011-2022 走看看