算法设计与应用基础:第一周(3)
来源:互联网 发布:凯驰吸尘器 知乎 编辑:程序博客网 时间:2024/05/22 02:23
238. Product of Array Except Self
- Total Accepted: 84193
- Total Submissions: 176822
- Difficulty: Medium
- Contributors: Admin
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.)
codes:
class Solution {public: vector<int> productExceptSelf(vector<int>& nums) { int n=nums.size(); int fromBegin=1; int fromLast=1; vector<int> res(n,1); for(int i=0;i<n;i++){ res[i]*=fromBegin; fromBegin*=nums[i]; } //for(int i=0;i<n;i++) //cout<<res[i]<<endl; for(int i=n-1;i>=0;i--) { res[i]*=fromLast; fromLast*=nums[i]; } //for(int i=0;i<n;i++) //cout<<res[i]<<endl; return res; }};
解题思路:主要在于算法中的两层循环,思路借鉴了博客一位大神对于算数组前n项积的方法。第一层循环:利用哨兵值Fromfirst每次res[i]累乘Fromfirst相当于累乘nums[i]之前的数组累积;第二层循环:res[i]每次累乘Fromlast相当于累乘nums[i]之后的数组累积;两层循环之后可得到正确的res值
res[i]*=fromBegin; fromBegin*=nums[i];第一行res[i]累乘fromBegin,第二行fromBegin累乘nums[i]以达到res[i]累乘之前所有的目的
0 0
- 算法设计与应用基础:第一周(3)
- 算法设计与应用基础:第一周
- 算法设计与应用基础第一周
- 算法设计与应用基础:第一周(1)
- 算法设计与应用基础:第一周(2)
- 算法设计与应用基础-第一周题目
- 算法设计与应用基础作业第一周
- 算法设计与应用基础:第十一周
- 算法设计与应用基础-第十一周
- 算法设计与应用基础:第十一周(1)
- 算法设计与应用基础:第四周
- 算法设计与应用基础-第四周
- 算法设计与应用基础: 第四周(1)
- 算法分析与设计第一周
- 算法设计与应用基础作业第四周
- 算法设计与应用基础系列3
- 算法设计与应用基础: 第三周(3)
- 算法设计与应用基础:第十三周(3)
- Linux自学笔记(十一)Linux之用户和用户组
- html5中新特性
- 多线程的一些概念
- RunTime 应用实例–关于埋点的思考
- hibernate+spring中怎么得到connection
- 算法设计与应用基础:第一周(3)
- React-Native之微信好友、朋友圈分享、支付
- Python 2.7.5 部分中文乱码
- Android--拍照功能的实现
- caffe windows 使用git运行.sh文件
- 一步一步学自定义View(1.简单入门)
- 222. Count Complete Tree Nodes
- 剑指offer(题三)
- 装饰设计模式