LN : leetcode 238 Product of Array Except Self
lc 238 Product of Array Except Self
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].
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.)
Accepted
本来可以先求出所有元素的积,再以O(n)的复杂度遍历除得答案,但题目要求不能使用除法。
我们知道对于答案的第一位一定等于从后往前乘,直至乘到它为止,不包括它自身;而答案的最后一位一定等于从前往后乘,直至乘到它为止,不包括它自身。所以我们定义两个变量,frombegin代表从前往后的积,fromlast代表从后往前的积。
通过一层for循环,对于每一次迭代都对当前元素乘上frombegin,对其对称位乘上fromlast,这样最终就可以很神奇地得到除去自身外的其他位的乘积。
class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
        int n = nums.size(), frombegin = 1, fromlast = 1;
        vector<int> ans(n,1);
        for (int i = 0; i < n; i++) {
            ans[i] *= frombegin;
            frombegin *= nums[i];
            ans[n-1-i] *= fromlast;
            fromlast *= nums[n-1-i];
        }
        return ans;
    }
};
LN : leetcode 238 Product of Array Except Self的更多相关文章
- 剑指offer 66. 构建乘积数组(Leetcode 238. Product of Array Except Self)
		剑指offer 66. 构建乘积数组 题目: 给定一个数组A[0, 1, ..., n-1],请构建一个数组B[0, 1, ..., n-1],其中B中的元素B[i] = A[0] * A[1] * ... 
- [LeetCode] 238. Product of Array Except Self 除本身之外的数组之积
		Given an array nums of n integers where n > 1, return an array output such that output[i] is equ ... 
- 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 equ ... 
- (medium)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 equ ... 
- 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] ... 
- C#解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 equ ... 
- [leetcode]238. Product of Array Except Self除了自身以外的数组元素乘积
		Given an array nums of n integers where n > 1, return an array output such that output[i] is equ ... 
- leetcode 238 Product of Array Except Self
		这题看似简单,不过两个要求很有意思: 1.不准用除法:最开始我想到的做法是全部乘起来,一项项除,可是中间要是有个0,这做法死得很惨. 2.空间复杂度O(1):题目说明了返回的那个数组不算进复杂度分析里 ... 
- Leetcode 238 Product of Array Except Self 时间O(n)和空间O(1)解法
		1. 问题描写叙述 给定一个n个整数的数组(n>1n>1)nums,返回一个数组output,当中的元素outputioutput_i的值为原数组nums中除numsinums_i之外的全 ... 
随机推荐
- ETL增量单表同步简述_根据timestamp增量
			ETL增量单表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 步骤简单说明: 1.设置job的执行属性,如 ... 
- mysql利用timestamp来进行帖子排序
			select * from table order by timestamp descorder by 该列 desc timestamp字段也可以用来排序,对应Java类型的.net.timesta ... 
- hibernate之多对一单向关联
			一个工作组(Group)里能够有多个用户(User),一个User仅仅属于一个Group,这是典型的多对一的关系. 在多对一的关系中正确的数据库设计是在多的这方(在这里是User这方)加一个Group ... 
- windows 7 文件加密设置
			方法/步骤1 加密文件 1 右击需加密的文件,选择“属性”命令. 2 在属性对话框的“常规‘选项卡中单击”高级“按钮. 3 在弹出的对话框中选中”加密内容以便保护数据“复选框,单击”确定“按钮. 4 ... 
- 文件权限的获取,cmd命令:Takeown
			takeown /f * /a /r /d y #强制将当前目录下的所有文件及文件夹.子文件夹下的所有者更改为管理员组(administrators)命令: cacls d:documents*.* ... 
- 创建一个Cordova完整应用
			本文承接上篇<创建Cordova插件>,通过实现一个简单的应用作为这个Cordova0基础系列的结束. 前边对Cordova编程已经讲了不少了.还没有拿真实应用为例完整的演练一遍构建过程. ... 
- 【剑指Offer】俯视50题之31 - 40题
			面试题31连续子数组的最大和 面试题32从1到n整数中1出现的次数 面试题33把数组排成最小的数 面试题34丑数 面试题35第一个仅仅出现一次的字符 面试题36数组中的逆序对 面试题37两个链表的第一 ... 
- C++入门学习——模板
			为什么须要模板? 我们已经学过重载(Overloading),对重载函数而言,C++ 通过函数參数(參数个数.參数类型)的正确匹配来调用重载函数.比如.为求两个数的最大值,我们定义 max () 函数 ... 
- VC++6.0不能显示MSDN解决的方法
			1.搜索看系统是否有Vshelp.dll文件.没有则去站点下载一个 位操作系统直接将下载的文件放在C:\Windows\System32 位操作系统则放在C:\Windows\SysWOW64 3.点 ... 
- Lint工具去除Android工程里不再需要的资源
			摘要: 在项目开发过程中常常会不断改UI设计,于是在定稿要发布的前夕,发现有好多不再需要的资源文件存在,发布的包会把这些无用的资源都包含在里面,造成APK的下载包过大.可以通过Android SDK自 ... 
