由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - F家onsite悲剧了,求refer
相关主题
一个题贡献西部小公司面筋
问一道题(5)求函数的极值那题的解法?
问一道求数组拐点值的题Linkedin悲剧,发面经
G家phone interview经验,攒人品问个算time complexity的问题
找个先增后减的数组里的数。share一下最近三个电话面试题Amazon, Groupon, Google
你们刷题都刷傻了, 那么简单的题目都做错onsite写完题还剩20分钟,没让优化
G一道题[合集] 一个算法题
最长递增子array的算法Google的一道面试题
相关话题的讨论汇总
话题: mid话题: int话题: arr话题: local话题: findlocal
进入JobHunting版参与讨论
1 (共1页)
t****m
发帖数: 140
1
上周面的F家,今天收到邮件悲剧
题目说实话都不难,也都做出来了,但是每轮只写了一题,有一轮还写了个bug
culture fit那轮也老老实实按照知道的准备
只有一道新题:
有一个数组,这个数组里的数总是比前一个大一或者小一,如果一个数比它相邻的两边
的数都大,这个数叫local max, 如果一个数比它相邻的两个数都小,这个数叫local
min(数组里的第一个和最后一个数都不能叫local max 和 local min)。
已知数组的长度远大于local Max/local min的数量,要求print出来这个数组里所有的
local max和local min(可以不按顺序)
我这题愣了下,然后当场写出答案,印度小哥看了看说looks good,拍了照片
顺便求个referral!leetcode、lintcode各两边,自学frontend、system design
c******n
发帖数: 4965
2
for(int i=1;i if (data[i-1] < data[i] && data [i] > data[i+1]) {
// print local max
}
if (data[i-1]>data[i] && data[i] < data[i+1]) {
// print local min
}
}
looks too simple, or am I missing something?

local

【在 t****m 的大作中提到】
: 上周面的F家,今天收到邮件悲剧
: 题目说实话都不难,也都做出来了,但是每轮只写了一题,有一轮还写了个bug
: culture fit那轮也老老实实按照知道的准备
: 只有一道新题:
: 有一个数组,这个数组里的数总是比前一个大一或者小一,如果一个数比它相邻的两边
: 的数都大,这个数叫local max, 如果一个数比它相邻的两个数都小,这个数叫local
: min(数组里的第一个和最后一个数都不能叫local max 和 local min)。
: 已知数组的长度远大于local Max/local min的数量,要求print出来这个数组里所有的
: local max和local min(可以不按顺序)
: 我这题愣了下,然后当场写出答案,印度小哥看了看说looks good,拍了照片

b**********5
发帖数: 7881
3
其他都是什么题啊? 这题, 你是按照一个挨着一个看?
b**********5
发帖数: 7881
4
好像应该有个lgn的解法。。。

【在 c******n 的大作中提到】
: for(int i=1;i: if (data[i-1] < data[i] && data [i] > data[i+1]) {
: // print local max
: }
: if (data[i-1]>data[i] && data[i] < data[i+1]) {
: // print local min
: }
: }
: looks too simple, or am I missing something?
:

n******n
发帖数: 12088
5
不就是第二和倒数第二之间每个元素扫一遍吗?
多一点优化:如果一个元素是局部最大,下一个只能是局部最小。

local

【在 t****m 的大作中提到】
: 上周面的F家,今天收到邮件悲剧
: 题目说实话都不难,也都做出来了,但是每轮只写了一题,有一轮还写了个bug
: culture fit那轮也老老实实按照知道的准备
: 只有一道新题:
: 有一个数组,这个数组里的数总是比前一个大一或者小一,如果一个数比它相邻的两边
: 的数都大,这个数叫local max, 如果一个数比它相邻的两个数都小,这个数叫local
: min(数组里的第一个和最后一个数都不能叫local max 和 local min)。
: 已知数组的长度远大于local Max/local min的数量,要求print出来这个数组里所有的
: local max和local min(可以不按顺序)
: 我这题愣了下,然后当场写出答案,印度小哥看了看说looks good,拍了照片

s******7
发帖数: 1758
6
这个题很莫名呀,O(n)很简单
lgn貌似不可能呀,任何一个都有可能是,怎么排除
t****m
发帖数: 140
7
印度小哥出的题哪能那么简单。。。
这题可以检查array的第一个元素和最后一个元素,判断array是不是单调递增,递减
如果是单调递增、递减,则这个区间内没有local max、min
然后就是类似binary search
l*********8
发帖数: 4642
8
You're right

【在 b**********5 的大作中提到】
: 好像应该有个lgn的解法。。。
l*********8
发帖数: 4642
9
You're right

【在 b**********5 的大作中提到】
: 好像应该有个lgn的解法。。。
b******i
发帖数: 914
10
pat pat
求问这个新题,如果求出所有的,有logN的算法吗,你是怎么做的?

local

【在 t****m 的大作中提到】
: 上周面的F家,今天收到邮件悲剧
: 题目说实话都不难,也都做出来了,但是每轮只写了一题,有一轮还写了个bug
: culture fit那轮也老老实实按照知道的准备
: 只有一道新题:
: 有一个数组,这个数组里的数总是比前一个大一或者小一,如果一个数比它相邻的两边
: 的数都大,这个数叫local max, 如果一个数比它相邻的两个数都小,这个数叫local
: min(数组里的第一个和最后一个数都不能叫local max 和 local min)。
: 已知数组的长度远大于local Max/local min的数量,要求print出来这个数组里所有的
: local max和local min(可以不按顺序)
: 我这题愣了下,然后当场写出答案,印度小哥看了看说looks good,拍了照片

相关主题
你们刷题都刷傻了, 那么简单的题目都做错贡献西部小公司面筋
G一道题求函数的极值那题的解法?
最长递增子array的算法Linkedin悲剧,发面经
进入JobHunting版参与讨论
s******7
发帖数: 1758
11
高, 可惜这样都fail

【在 t****m 的大作中提到】
: 印度小哥出的题哪能那么简单。。。
: 这题可以检查array的第一个元素和最后一个元素,判断array是不是单调递增,递减
: 如果是单调递增、递减,则这个区间内没有local max、min
: 然后就是类似binary search

t****m
发帖数: 140
12
大牛请看我楼上的答案
就是有个小trick检查数组是不是单调递增递减
然后类似binary search的做法可以print出所有的local max、min

【在 b******i 的大作中提到】
: pat pat
: 求问这个新题,如果求出所有的,有logN的算法吗,你是怎么做的?
:
: local

y*****e
发帖数: 712
13
只看第一个和最后一个就能判断monotonically increasing/decreasing吗?好像不能
吧?

【在 t****m 的大作中提到】
: 印度小哥出的题哪能那么简单。。。
: 这题可以检查array的第一个元素和最后一个元素,判断array是不是单调递增,递减
: 如果是单调递增、递减,则这个区间内没有local max、min
: 然后就是类似binary search

t****m
发帖数: 140
14
是不是我题目没写清楚?
你再仔细看看

【在 y*****e 的大作中提到】
: 只看第一个和最后一个就能判断monotonically increasing/decreasing吗?好像不能
: 吧?

y*****e
发帖数: 712
15
哦忘了+1 -1这个条件了,但logN能求出所有的吗?

【在 t****m 的大作中提到】
: 是不是我题目没写清楚?
: 你再仔细看看

t****m
发帖数: 140
16
如果一个数组是:
[1, 2, 3, 4, 5]
你知道这个数组的长度是5
然后第一个数和第最后一个数的差是4
那么这个数组只能是单调递增的,对吗?

【在 y*****e 的大作中提到】
: 哦忘了+1 -1这个条件了,但logN能求出所有的吗?
t****m
发帖数: 140
17
Bestcase 数组单调 O(1)
worstcase 整个数组一全部都是local max、min,列入[1,2,1,2,1。。。], O(n)

【在 y*****e 的大作中提到】
: 哦忘了+1 -1这个条件了,但logN能求出所有的吗?
P******r
发帖数: 1342
18
那道题应该用divide and conquer 做吧。
+1 -1那个条件告诉你,在区间[i, j]里,如果A[j] -A[i] = +- ( j - i ), 那么这个
区间里就不可能有local min or max. 条件告诉你这样的区间非常多,所以可以用类似
二分的算法
P******r
发帖数: 1342
19
考官说了考虑local min max极少的情况。就不要考虑这种worst case了

:Bestcase 数组单调 O(1)
:worstcase 整个数组一全部都是local max、min,列入[1,2,1,2,1。。。], O(
n)
y*****e
发帖数: 712
20
明白了,果真条件每一句都很有用啊

【在 P******r 的大作中提到】
: 那道题应该用divide and conquer 做吧。
: +1 -1那个条件告诉你,在区间[i, j]里,如果A[j] -A[i] = +- ( j - i ), 那么这个
: 区间里就不可能有local min or max. 条件告诉你这样的区间非常多,所以可以用类似
: 二分的算法

相关主题
问个算time complexity的问题[合集] 一个算法题
share一下最近三个电话面试题Amazon, Groupon, GoogleGoogle的一道面试题
onsite写完题还剩20分钟,没让优化问个最长递增序列的问题
进入JobHunting版参与讨论
l******9
发帖数: 26
21
我的two cents
public void print(int[] a) {
helper(a, 0, a.length - 1);
}

public void print(int[] a) {
helper(a, 0, a.length - 1);
}
public void helper(int[] a, int left, int right) {
if (right - left < 2) {
return;
}
int mid = left + (right - left) / 2;
if (a[mid] > a[mid-1] && a[mid] > a[mid+1]) {
System.out.println(a[mid]);
} else if (a[mid] < a[mid-1] && a[mid] < a[mid+1]) {
System.out.println(a[mid]);
}
if (Math.abs(a[mid] - a[left]) < mid - left) {
helper(a, left, mid);
}
if (Math.abs(a[right] - a[mid]) < right - mid) {
helper(a, mid, right);
}
}
P******r
发帖数: 1342
22
差不多。。不过漏考虑数列整体递减的情况了。。

:我的two cents
h*********n
发帖数: 11319
23
应该是正解了

【在 P******r 的大作中提到】
: 那道题应该用divide and conquer 做吧。
: +1 -1那个条件告诉你,在区间[i, j]里,如果A[j] -A[i] = +- ( j - i ), 那么这个
: 区间里就不可能有local min or max. 条件告诉你这样的区间非常多,所以可以用类似
: 二分的算法

n******n
发帖数: 12088
24
哈哈,同忘记

【在 y*****e 的大作中提到】
: 哦忘了+1 -1这个条件了,但logN能求出所有的吗?
e********2
发帖数: 495
25
clog(N),c是local min/max个数。

【在 h*********n 的大作中提到】
: 应该是正解了
c******n
发帖数: 4965
26
谢了, 很有趣。 我当年第一次被拒是一个类似的题,
100000个士兵, 里面有几个有感染什么病毒。 然后可以把血样放一起化验, 问怎么
能最快找出来这几个士兵

【在 t****m 的大作中提到】
: 印度小哥出的题哪能那么简单。。。
: 这题可以检查array的第一个元素和最后一个元素,判断array是不是单调递增,递减
: 如果是单调递增、递减,则这个区间内没有local max、min
: 然后就是类似binary search

h****3
发帖数: 89
27
public static void printLocalHelper(int[] arr, int left, int right){
/* return condition */
if(right-left<2) return;
int mid = left+(right-left)/2;
if(right-left == Math.abs(arr[right]-arr[left])){
return;
}
if((arr[mid] (arr[mid]>arr[mid-1] && arr[mid]>arr[mid+1]) ){
System.out.print(arr[mid]+" ");
}
printLocalHelper(arr,left,mid);
printLocalHelper(arr,mid,right);
}
感谢分享
y*****e
发帖数: 712
28
还需要另外考虑递减的情况吗?层主用的math.abs(),应该递增减都包括了吧

【在 P******r 的大作中提到】
: 差不多。。不过漏考虑数列整体递减的情况了。。
:
: :我的two cents
: :

b**********5
发帖数: 7881
29
那个code,好像修改过。。 我的观察能力强吧, 仔细吧。。。 可惜, 这种能力,
面试都不考虑。。。

【在 y*****e 的大作中提到】
: 还需要另外考虑递减的情况吗?层主用的math.abs(),应该递增减都包括了吧
l*k
发帖数: 10
30
My solution in Python:
def findLocal(A, i, j):
if abs(A[i]-A[j]) == j-i:
return
else:
if j-i == 2:
print(A[i+1])
return
m = (i+j)/2
if A[m]>A[m-1] and A[m]>A[m+1]:
print(A[m])
if A[m] print(A[m])
findLocal(A, i, m)
findLocal(A, m, j)
相关主题
amazon面完感受: 不会的都不考问一道题(5)
两道2009算法题问一道求数组拐点值的题
一个题G家phone interview经验,攒人品
进入JobHunting版参与讨论
f*********5
发帖数: 576
31
如果输入是21212121212121212121212121212121212121
你这个还不如O(n)吧?

【在 e********2 的大作中提到】
: clog(N),c是local min/max个数。
c*******e
发帖数: 621
32
patpat
简单题要两道才行的

local

【在 t****m 的大作中提到】
: 上周面的F家,今天收到邮件悲剧
: 题目说实话都不难,也都做出来了,但是每轮只写了一题,有一轮还写了个bug
: culture fit那轮也老老实实按照知道的准备
: 只有一道新题:
: 有一个数组,这个数组里的数总是比前一个大一或者小一,如果一个数比它相邻的两边
: 的数都大,这个数叫local max, 如果一个数比它相邻的两个数都小,这个数叫local
: min(数组里的第一个和最后一个数都不能叫local max 和 local min)。
: 已知数组的长度远大于local Max/local min的数量,要求print出来这个数组里所有的
: local max和local min(可以不按顺序)
: 我这题愣了下,然后当场写出答案,印度小哥看了看说looks good,拍了照片

h****3
发帖数: 89
33
在楼主原文中有这么一句话:
已知数组的长度远大于local Max/local min的数量
所以对这种情况还是二分法更优

【在 f*********5 的大作中提到】
: 如果输入是21212121212121212121212121212121212121
: 你这个还不如O(n)吧?

a*********0
发帖数: 2727
34
全是老题为什么一轮只能做一题呢?
b**********5
发帖数: 7881
35
有的面试官, 看你不顺眼, 就给你一道题, 你怎么办?

【在 a*********0 的大作中提到】
: 全是老题为什么一轮只能做一题呢?
t****m
发帖数: 140
36
面试官一开始义正言辞的对我说:
我们反对背题,你背题我们能看出来!
我就说,那我一边说一边给你详细的解释行吗?
就不敢写两道了

【在 a*********0 的大作中提到】
: 全是老题为什么一轮只能做一题呢?
b**********5
发帖数: 7881
37
能上个全一点的面经么? design什么题啊?

【在 t****m 的大作中提到】
: 面试官一开始义正言辞的对我说:
: 我们反对背题,你背题我们能看出来!
: 我就说,那我一边说一边给你详细的解释行吗?
: 就不敢写两道了

s***m
发帖数: 336
38
wow, 简洁明快的解法。多谢!

【在 h****3 的大作中提到】
: 在楼主原文中有这么一句话:
: 已知数组的长度远大于local Max/local min的数量
: 所以对这种情况还是二分法更优

s********l
发帖数: 998
39
可以啊~
看差值是不是距离~

【在 y*****e 的大作中提到】
: 只看第一个和最后一个就能判断monotonically increasing/decreasing吗?好像不能
: 吧?

l*****a
发帖数: 180
40
楼主挂的原因是什么? 说有bug我不信,有的人写code有bug也进了。说只每轮做了一
道我也不太信,我听说也有人每轮只做了一道进了。

local

【在 t****m 的大作中提到】
: 上周面的F家,今天收到邮件悲剧
: 题目说实话都不难,也都做出来了,但是每轮只写了一题,有一轮还写了个bug
: culture fit那轮也老老实实按照知道的准备
: 只有一道新题:
: 有一个数组,这个数组里的数总是比前一个大一或者小一,如果一个数比它相邻的两边
: 的数都大,这个数叫local max, 如果一个数比它相邻的两个数都小,这个数叫local
: min(数组里的第一个和最后一个数都不能叫local max 和 local min)。
: 已知数组的长度远大于local Max/local min的数量,要求print出来这个数组里所有的
: local max和local min(可以不按顺序)
: 我这题愣了下,然后当场写出答案,印度小哥看了看说looks good,拍了照片

相关主题
G家phone interview经验,攒人品G一道题
找个先增后减的数组里的数。最长递增子array的算法
你们刷题都刷傻了, 那么简单的题目都做错贡献西部小公司面筋
进入JobHunting版参与讨论
m*******n
发帖数: 47
41
#include
#include
#include
using namespace std;
void solve(vector list, int l, int r) {
if(l>r) return;
int m = (l+r)/2;
if (list[m-1]==list[m+1]&&(list[m]==list[m-1]+1||list[m]==list[m-1]-1)) {
cout<<"found local max/min at "< }
if(abs(list[l]-list[r])>=r-l) return;
solve(list, m+1,r);
solve(list, l,m-1);
}
void solve(vector list) {
if(list.size()<3)return;
solve(list, 1, list.size()-2);
}
int main() {
solve(vector({1,2,3,2,3,4,5,6,7}));
return 0;
}
1 (共1页)
进入JobHunting版参与讨论
相关主题
Google的一道面试题找个先增后减的数组里的数。
问个最长递增序列的问题你们刷题都刷傻了, 那么简单的题目都做错
amazon面完感受: 不会的都不考G一道题
两道2009算法题最长递增子array的算法
一个题贡献西部小公司面筋
问一道题(5)求函数的极值那题的解法?
问一道求数组拐点值的题Linkedin悲剧,发面经
G家phone interview经验,攒人品问个算time complexity的问题
相关话题的讨论汇总
话题: mid话题: int话题: arr话题: local话题: findlocal