Product of Array Exclude Itself
2015-08-09 15:35
471 查看
Given an integers array A.
Define B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], calculate B WITHOUT divide operation.
Have you met this question in a real interview?
Yes
Example
For A =
按照定义做,定义两个数组A,B,A[i]表示i位置后的数的乘积,B[i]表示i前的数的乘积,这样ans[i] = A[I] * B[i];
Define B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], calculate B WITHOUT divide operation.
Have you met this question in a real interview?
Yes
Example
For A =
[1, 2, 3], return
[6, 3, 2].
按照定义做,定义两个数组A,B,A[i]表示i位置后的数的乘积,B[i]表示i前的数的乘积,这样ans[i] = A[I] * B[i];
class Solution { public: /** * @param A: Given an integers array A * @return: A long long array B and B[i]= A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1] */ //分段的思路,用两个数组B[i],表示i之前的数的乘积, A[i]表示i之后的数的乘积 vector<long long> productExcludeItself(vector<int> &nums) { // write your code here int len = nums.size(); vector<long long> ans; if(len < 1) return ans; long long *A = new long long[len + 5]; long long *B = new long long[len + 5]; for(int i = 0; i < len + 5; ++i) { A[i] = 1; B[i] = 1; } for(int i = 1; i < len; ++i) { B[i] = nums[i - 1] * B[i - 1]; } for(int i = len - 2; i >= 0; --i) { A[i] = A[i + 1] * nums[i + 1]; } for(int i = 0; i < len; ++i) { ans.push_back(A[i] * B[i]); } return ans; } };
相关文章推荐
- 责任链模式(Chain of Responsibility)的标准版
- Validation of viewstate MAC failed.的解决方法
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- javascript数组操作总结和属性、方法介绍
- mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
- JavaScript Array扩展实现代码
- JavaScript之数组(Array)详解
- C#中Array与ArrayList用法及转换的方法
- Array栈方法和队列方法的特点说明
- Array.prototype.slice 使用扩展
- Some tips of wmi scripting in jscript (1)
- Array, Array Constructor, for in loop, typeof, instanceOf
- 实例详解ECMAScript5中新增的Array方法
- js Array的用法总结
- JavaScript 判断判断某个对象是Object还是一个Array
- Javascript中的Array数组对象详谈
- js模拟实现Array的sort方法
- 在javascript将NodeList作为Array数组处理的方法
- PHP array_multisort()函数的使用札记
- PHP中array_merge和array相加的区别分析