zoukankan      html  css  js  c++  java
  • 【LeetCode】238.Product of Array Except Self

    题目:

    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].

    题解:

      有点类似于Trapping Rain Water,从左到右遍历元素,计算该元素左方的乘积,再由右向左,计算右方乘积,同时左右两个积相乘放入result中。

    Solution 1 ()

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

      比较直观的代码,维护左右两个矩阵。(from here)

    Solution 2 ()

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

      

  • 相关阅读:
    深入探讨this指针
    杂谈:你选择coco 还是unity3d?
    一分钟制作U盘版BT3
    【转载】ShowWindow函数
    hadoop备记
    OA系统权限管理设计(转载)
    二叉树的存储与遍历
    这难道是CSDN的BUG? 大家帮忙看看哪里有问题
    Cookie 操作工具类
    Java实现 蓝桥杯VIP 算法训练 数的统计
  • 原文地址:https://www.cnblogs.com/Atanisi/p/6729597.html
Copyright © 2011-2022 走看看