Product of Array Except Self_Week5
来源:互联网 发布:严宽乔振宇 知乎 编辑:程序博客网 时间:2024/06/05 20:59
Product of Array Except Self_Week5
题目:(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].
难度: Medium
解题思路:
题目意为函数返回一个结果数组,第k个元素为原数组的除了第k个元素其本身的所有元素的乘积。这个问题本身很简单,遍历一遍数组得到所有元素的乘积,再挨个除以每个元素得到结果,复杂度为O(n),
但题目中有要求不得使用除法
这只能另外想办法了。
解题思路是这样的,新建两个数组,一个为mulFromBegin,一个为mulFromEnd。即遍历一次数组,mulFromBegin数组中的第k个元素,储存了原数组的第1个元素到第k-1个元素的乘积、反之亦然,mulFromEnd中储存原数组倒着的乘积。(将两个数组第一个元素都设置为1,特意让第k个元素是原数组第1个元素到第k-1个元素的乘积是为了去掉第k个数,满足题意。)
最后将两个数组的每一项都相乘,就得到结果。
若是不够明确,具体操作为:
例如想得到结果数组中的第3个数——即result[2],
那mulFromBegin[2]将会是 1*nums[0]*nums[1]
而mulFromEnd[2]将会是1*nums[n-1]nums[n-2]…*nums[3]
两者相乘即得到原数组nums所有元素(除了第3个元素)的乘积
#include <iostream>#include <vector>using namespace std;class Solution {public: vector<int> productExceptSelf(vector<int>& nums) { int i, size = nums.size(); vector<int> result(size); /*下面两个数组表示原数组nums 分别从前和从后,累积的乘积,第一项都为常数1 假设 nums数组 中,有 a b c d 数字的话、mulFromBegin[1] = 1*a mulFromBegin[2] = 1*a*b、mulFromBegin[3] = 1*a*b*c,没有第五项 同理 mulUpFromEnd[1] = d*1、 mulFromEnd[2] = 1*d*c */ vector<int> mulFromBegin(size), mulFromEnd(size); mulFromBegin[0] = 1; mulFromEnd[0] = 1; for (i = 1; i < size; i++) { mulFromBegin[i] = mulFromBegin[i-1] * nums[i-1]; mulFromEnd[i] = mulFromEnd[i-1] * nums[size-i]; } for (i = 0; i < size; i++) { result[i] = mulFromBegin[i] * mulFromEnd[size-1-i]; } return result; }};
- Product of Array Except Self_Week5
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- Product of Array Except Self
- 喜迎十九大的召开,无穷小微积分即将浮出水面
- Nginx +tomcat 实现负载均衡集群
- 多态继承中的内存图解
- 虽然微不足道但是很有用的JAVA基础—函数
- 多态中的对象变化内存图解
- Product of Array Except Self_Week5
- Unity3D脚本中创建的gameobject如何删除
- 数组和类数组转换-学习笔记
- 登录注册功能的实现,核心的验证代码
- 浮点数在内存中的存储形式
- CF2017.10.5 C. Qualification Rounds
- mysql触发器
- SPI写解析
- 走穿java23种设计模式-4建造者模式详解