Redian新闻
>
hp smb 重新charge了,有啥希望么?
avatar
hp smb 重新charge了,有啥希望么?# PDA - 掌中宝
s*e
1
昨天面完facebook第二轮,两次的面试题如下:
第一轮:
1. atoi, write exact code
2. 电话键盘上每个数字对应一系列字母,给任意长度电话号码,打印所有可能字母组
合。基本就是PIE
上的原题
第二轮:
1. Two sorted array, find their intersection, write exact code
2. Part of a sorted array is shifted, like:
1 2 3 4 5 6--> 6 5 1 2 3 4
but we don't know how many digits are shifted. Write a efficient method to
find the position of a given value in the array.
avatar
a*h
2
还是hp就是喜欢这么涮人啊。。。也没收到什么在不在25k之内的邮件
avatar
s*e
3
xie写错了
2. Part of a sorted array is shifted, like:
=======================
应该是 1 2 3 4 5 6--> 5 6 1 2 3 4
avatar
i*b
4
PIE 是啥?
avatar
i*b
5
第三轮电话面试?那可能因为你前两次面试的结果不是很好也不是很坏。
如果很好就应该onsite了。
avatar
s*e
6
Programming Interviews Exposed

【在 i**********b 的大作中提到】
: PIE 是啥?
avatar
K*g
7
第二轮第二题,题目不清楚。能否举个例子?
如果要判断一个given value的位置,直接扫描一遍,看有多少个数比它小,不就得了?

【在 s*********e 的大作中提到】
: 昨天面完facebook第二轮,两次的面试题如下:
: 第一轮:
: 1. atoi, write exact code
: 2. 电话键盘上每个数字对应一系列字母,给任意长度电话号码,打印所有可能字母组
: 合。基本就是PIE
: 上的原题
: 第二轮:
: 1. Two sorted array, find their intersection, write exact code
: 2. Part of a sorted array is shifted, like:
: 1 2 3 4 5 6--> 6 5 1 2 3 4

avatar
l*a
8
那你就是O(n)
这个题可以O(Logn)的

了?

【在 K******g 的大作中提到】
: 第二轮第二题,题目不清楚。能否举个例子?
: 如果要判断一个given value的位置,直接扫描一遍,看有多少个数比它小,不就得了?

avatar
K*g
9
你怎么做到O(logn)?不管怎么样,你都要先扫描一遍数组找到那些被shift的地方,这
个就已经是O(n)了。

【在 l*****a 的大作中提到】
: 那你就是O(n)
: 这个题可以O(Logn)的
:
: 了?

avatar
b*w
10
我上次通知说第三轮,结果后来又说把我据了。
avatar
o*t
11
这题无穷经典,不过网上很多解法很不直观,不停地 check boundry 程序看起来很乱。
我自己的解法是:binary search look for the shift point --- O(logN)
然后按照 shift 计算一个 virtual index,整个数组就可以认为是标准排序后的,再
次 binary search 找到所需的值 --- O(logN)

【在 K******g 的大作中提到】
: 你怎么做到O(logn)?不管怎么样,你都要先扫描一遍数组找到那些被shift的地方,这
: 个就已经是O(n)了。

avatar
y*i
12
就是二分查找啊,才能做到O(logn),不过比较麻烦的就是如果有重复元素的情况

【在 K******g 的大作中提到】
: 你怎么做到O(logn)?不管怎么样,你都要先扫描一遍数组找到那些被shift的地方,这
: 个就已经是O(n)了。

avatar
s*e
13
确实需要多次check bound。 我写的这个不考虑重复元素的情况
int search(int arr[], int l, int r, int value )
{
int m = (l+r)/2;

if(value == arr[m]){
return m;
}
if(l > r){
return -1;
}
if(value < arr[m])
{ // number of shifted bits < length/2
if(arr[l] > arr[m])
return search(arr, l, m-1,value);
else{
// not shifted or shifted bits >= length/2
if(value < arr[l])
return search(arr, m+1, r, value);
avatar
i*r
14
I don't think you can achieve O(logn) with repetitive elements ... You
cannot even find shift point within O(logn)

【在 y**i 的大作中提到】
: 就是二分查找啊,才能做到O(logn),不过比较麻烦的就是如果有重复元素的情况
avatar
c*f
15
thanks
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。