【Leet Code】238. Product of Array Except Self---Medium
2015-11-18 16:14
453 查看
Given an array of n integers where n > 1,
return an array
equal to the product of all the elements of
Solve it without division and in O(n).
For example, given
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.)
思路:
此题目有一个很简单的解法:将所有的元素相乘得到值total,然后对结果数组求值的时候只需要用total除以原数组中对应的元素,但是题目规定不允许用除法,所以需要另寻他法。
两次遍历数组,第一次将前面相乘的结果存入结果数组中,然后第二次再将后面相乘的值与前面相乘的结果相乘并存入最终的结果数组中。
代码实现:
nums,
return an array
outputsuch that
output[i]is
equal to the product of all the elements of
numsexcept
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.)
思路:
此题目有一个很简单的解法:将所有的元素相乘得到值total,然后对结果数组求值的时候只需要用total除以原数组中对应的元素,但是题目规定不允许用除法,所以需要另寻他法。
两次遍历数组,第一次将前面相乘的结果存入结果数组中,然后第二次再将后面相乘的值与前面相乘的结果相乘并存入最终的结果数组中。
代码实现:
class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { vector<int> res(nums.size(), 1); for(int i = 1; i < nums.size(); ++i) res[i] = res[i-1] * nums[i-1]; int temp = nums.back(); for(int i = nums.size()-2; i >= 0; --i) { res[i] = res[i] * temp; temp *= nums[i]; } return res; } };
相关文章推荐
- 支持2D/3D矢量图形处理控件VectorDraw v7.7006.1.0发布
- 对风说爱你
- Ubuntu下Matlab 2014 快捷键修改
- 简化的以,号分隔为SQLtable
- 背包问题九讲
- rapidjson使用总结
- 自动化运维-使用Shell脚本简单实现
- java动态代理模式
- sort命令
- 一个简单的对话框JDialog
- Android 开发常用代码片段
- 统计学习方法 --- 感知机模型原理及c++实现
- MySQL的几种优化方法
- 自定义卫星菜单CustomArcMenu
- html网页框架
- 对指定文件生成数字摘要的MD5工具类
- 将文件内容隐藏在bmp位图中
- 【GZOJ】1372——阶乘
- 黑马程序员——Java继承——多线程(二)
- FlyCapture2相机的连接和图像采集