Careercup - Facebook面试题 - 5179916190482432
2014-05-01 00:45
原题:
input [,,,]
output [,,,] Multiply all fields except it's own position. Restrictions:
. no use of division
. complexity in O(n)
题目:给定一个整数数组,将个元素变为其他元素的乘积,例如[2, 3, 1, 4]变为[12, 8, 24, 6]。限制不准用除法,而且时间复杂度为线性级别。
解法:用一个额外的数组能够完成O(n)时间的算法。由于每个元素在变化之后,应该等于左边和右边的累计乘积,所以两边的累计乘积必须同时能够知道。一边可以用O(1)空间扫描得到,另一边只能用O(n)空间进行记录。时间空间复杂度均为O(n),请看代码。
代码:
// http://www.careercup.com/question?id=5179916190482432
#include <cstdio>
#include <vector>
using namespace std; void multiplyArray(vector<int> &v)
{
vector<int> vp;
int p;
int i;
int n = (int)v.size(); vp.resize(n);
p = ;
for (i = ; i <= n - ; ++i) {
vp[i] = p;
p *= v[i];
} p = ;
for (i = n - ; i >= ; --i) {
vp[i] = p * vp[i];
p *= v[i];
} for (i = ; i < n; ++i) {
v[i] = vp[i];
} vp.clear();
} int main()
{
int i, n;
vector<int> v; while (scanf("%d", &n) == && n >= ) {
v.resize(n);
for (i = ; i < n; ++i) {
scanf("%d", &v[i]);
}
multiplyArray(v);
for (i = ; i < n; ++i) {
printf((i ? " %d" : "%d"), v[i]);
}
putchar('\n');
} return ;
}
Careercup - Facebook面试题 - 5179916190482432的更多相关文章
- Careercup - Facebook面试题 - 6026101998485504
2014-05-02 10:47 题目链接 原题: Given an unordered array of positive integers, create an algorithm that ma ...
- Careercup - Facebook面试题 - 5344154741637120
2014-05-02 10:40 题目链接 原题: Sink Zero in Binary Tree. Swap zero value of a node with non-zero value of ...
- Careercup - Facebook面试题 - 5765850736885760
2014-05-02 10:07 题目链接 原题: Mapping ' = 'A','B','C' ' = 'D','E','F' ... ' = input: output :ouput = [AA ...
- Careercup - Facebook面试题 - 5733320654585856
2014-05-02 09:59 题目链接 原题: Group Anagrams input = ["star, astr, car, rac, st"] output = [[& ...
- Careercup - Facebook面试题 - 4892713614835712
2014-05-02 09:54 题目链接 原题: You have two numbers decomposed in binary representation, write a function ...
- Careercup - Facebook面试题 - 6321181669982208
2014-05-02 09:40 题目链接 原题: Given a number N, write a program that returns all possible combinations o ...
- Careercup - Facebook面试题 - 5177378863054848
2014-05-02 08:29 题目链接 原题: Write a function for retrieving the total number of substring palindromes. ...
- Careercup - Facebook面试题 - 4907555595747328
2014-05-02 07:49 题目链接 原题: Given a set of n points (coordinate in 2d plane) within a rectangular spac ...
- Careercup - Facebook面试题 - 5435439490007040
2014-05-02 07:37 题目链接 原题: // merge sorted arrays 'a' and 'b', each with 'length' elements, // in-pla ...
随机推荐
- oracle中的instr()
INSTR (源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是说从字符的开始 到字符的结尾就结束. ...
- Backbone.js学习之View
千呼万唤始出来,终于到最后一个要点View了.照旧,先来一睹官方文档: Backbone views are almost more convention than they are code - t ...
- 第二回 认识CDN
CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定.通过在网络各处放置节 ...
- MVC4 图片上传
新增 new { enctype = "multipart/form-data" } 这个必须要有 @using (Html.BeginForm(Html.BeginForm(&q ...
- mysql之触发器trigger(1)
触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/befo ...
- chrome源码编译常见的错误解决
最近编译chrome浏览器源码时,下载源码和一般的设置,网络中都有说明,而且一般的说明都是类似的,然后都说编译成功了,但本人没有试成功,碰到常见的2个错误,记录下,不知道大家碰到没有. 1.pytho ...
- Excel中 设置使得每行的颜色不一样
在编写测试案例的时候,众多的excel行看的眼睛花花的,这里给出一个小技巧,设置Excel的每行显示的颜色不一样,最终的效果如下: 具体操作: 1. Ctrl+A全选所有表格区域 ...
- BootstrapDialog自动加<br> BUG处理
用惯了其他的ui框架 ,综合感觉BootstrapDialog算是最好的一个了. 因为不想在js中写过多的html代码,所以习惯的写法,把代码写在html中,js引用 实例如下: html代码 < ...
- 支持IE6的树形节结构TreeTable
关于TreeTable实际应用的案例:http://www.cnblogs.com/qigege/p/5213689.html treeTable是跨浏览器.性能很高的jquery的树表组件,它使用非 ...
- JS去除数组中重复值的四种方法
JS去除数组中重复值的四种方法 1 /// <summary> o[this[i]] = ""; } } newArr.p ...