zoukankan      html  css  js  c++  java
  • Product of Array Except Itself

    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 ofnums 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.)

    Analyse: Use a left vector and right vector to record the product until current number from left / right.  Space O(n), time O(n).

     1 class Solution {
     2 public:
     3     vector<int> productExceptSelf(vector<int>& nums) {
     4         vector<int> left(nums.size(), 1);
     5         vector<int> right(nums.size(), 1);
     6         
     7         for(int i = 1; i < nums.size(); i++) 
     8             left[i] = left[i - 1] * nums[i - 1];
     9         for(int i = nums.size() - 2; i >= 0; i--)
    10             right[i] = right[i + 1] * nums[i + 1];
    11         
    12         vector<int> result(nums.size(), 1);
    13         for(int i = 0; i < nums.size(); i++)
    14             result[i] = left[i] * right[i];
    15             
    16         return result;
    17     }
    18 };

    Use the result to store left production and a variable to store the right production. Space O(1), time O(n)

     1 class Solution {
     2 public:
     3     vector<int> productExceptSelf(vector<int>& nums) {
     4         int n = nums.size(); 
     5         vector<int> result(n, 1);
     6         
     7         // first scan nums, and store its left production in result
     8         for(int i = 1; i < n; i++)
     9             result[i] = result[i - 1] * nums[i - 1];
    10         
    11         int right = nums[n - 1];
    12         for(int i = n - 2; i >= 0; i--) {
    13             result[i] *= right;
    14             right *= nums[i];
    15         }
    16         return result;
    17     }
    18 };
  • 相关阅读:
    域账户-配置文件
    创建任务计划
    查看系统和PowerShell版本
    查找数组中元素的索引位置
    更改计算机名称,修改密码
    生成GUID
    微服务架构 vs. SOA架构
    springMvc架构简介
    Spring Boot和Spring cloud
    Spring链接汇总
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/5722244.html
Copyright © 2011-2022 走看看