c***z 发帖数: 6348 | 1 已经悲剧
题1:anagram of a palindrome 要求O(N)
int isAnagrmaOfPalindrome(char *string){
unsigned int bitc = 0, i = 0;
int out = 0;
while(*string){
i = *(string++) - 'a';
bitc ^= (1 << i);
}
out = (int)(bitc & (bitc - 1));
return !out;
}
题2:重新排序整数的digits使其最大化 (e.g. 3515 -> 5531) 要求O(1)
int largestSibling(int N) {
int digit;
int temp = 0;
int output = 0;
for (digit=9;digit>0;digit--)
for (temp=N;temp>0;temp/=10)
if (temp%10==digit) output = output + digit*10;
return output;
}
感想:这和data scientist有什么关系嘛? |
Y***e 发帖数: 1030 | 2 你遇到的题怎么都那么难啊?
【在 c***z 的大作中提到】 : 已经悲剧 : 题1:anagram of a palindrome 要求O(N) : int isAnagrmaOfPalindrome(char *string){ : unsigned int bitc = 0, i = 0; : int out = 0; : while(*string){ : i = *(string++) - 'a'; : bitc ^= (1 << i); : } : out = (int)(bitc & (bitc - 1));
|
j*******g 发帖数: 331 | 3 你都用C++写的?用python会简单一点吧
【在 c***z 的大作中提到】 : 已经悲剧 : 题1:anagram of a palindrome 要求O(N) : int isAnagrmaOfPalindrome(char *string){ : unsigned int bitc = 0, i = 0; : int out = 0; : while(*string){ : i = *(string++) - 'a'; : bitc ^= (1 << i); : } : out = (int)(bitc & (bitc - 1));
|
l*******m 发帖数: 1096 | 4 FLG其实没有DS,很多码公都是做ML的Phd
【在 Y***e 的大作中提到】 : 你遇到的题怎么都那么难啊?
|
i**********a 发帖数: 149 | 5 都是码工的题-_-!!!
1));="" :="" ...................="">
【在 c***z 的大作中提到】 : 已经悲剧 : 题1:anagram of a palindrome 要求O(N) : int isAnagrmaOfPalindrome(char *string){ : unsigned int bitc = 0, i = 0; : int out = 0; : while(*string){ : i = *(string++) - 'a'; : bitc ^= (1 << i); : } : out = (int)(bitc & (bitc - 1));
|
t*********u 发帖数: 26311 | 6 第二道简单啊
0-9 做成bucket
先扫一遍,原数,把对应的digit扔到bucket里面去
然后从最大的bucket往外拿出来填高位。。。。。
【在 c***z 的大作中提到】 : 已经悲剧 : 题1:anagram of a palindrome 要求O(N) : int isAnagrmaOfPalindrome(char *string){ : unsigned int bitc = 0, i = 0; : int out = 0; : while(*string){ : i = *(string++) - 'a'; : bitc ^= (1 << i); : } : out = (int)(bitc & (bitc - 1));
|
O*********y 发帖数: 923 | 7
都是算法题,符合DS的要求呀
【在 c***z 的大作中提到】 : 已经悲剧 : 题1:anagram of a palindrome 要求O(N) : int isAnagrmaOfPalindrome(char *string){ : unsigned int bitc = 0, i = 0; : int out = 0; : while(*string){ : i = *(string++) - 'a'; : bitc ^= (1 << i); : } : out = (int)(bitc & (bitc - 1));
|
z****e 发帖数: 54598 | 8 算法是优化,ds要从乱七八糟不make sense的数据中弄成make sense
算法其实不是特别重要,统计更重要
这种题也很扯蛋,估计是面官压根不懂ds
【在 O*********y 的大作中提到】 : : 都是算法题,符合DS的要求呀
|
B*****g 发帖数: 34098 | 9 几家高大上就是面算法,不管啥职位
【在 c***z 的大作中提到】 : 已经悲剧 : 题1:anagram of a palindrome 要求O(N) : int isAnagrmaOfPalindrome(char *string){ : unsigned int bitc = 0, i = 0; : int out = 0; : while(*string){ : i = *(string++) - 'a'; : bitc ^= (1 << i); : } : out = (int)(bitc & (bitc - 1));
|
w********m 发帖数: 1137 | |
|
|
l*********s 发帖数: 5409 | 11 google and facebook should have real DS positions as they are in marketing
business.
【在 l*******m 的大作中提到】 : FLG其实没有DS,很多码公都是做ML的Phd
|
c***z 发帖数: 6348 | 12 来自jobvite的坑爹的HR说面SQL
codility的坑爹test给了这两题
我含着眼泪做完,以为能run就ok
submit了也没个comfirmation email什么的
最后自己抽抽了,给了各反馈说这test完全没有意义
综合以上,要是能过就是奇迹了 |
q*c 发帖数: 9453 | 13
这样行嘛? 你这样是架设所有字母最多出现一次吧。这样的话, 如果有字母出现 4
次, 和出现两次, 无法区别啊。
【在 c***z 的大作中提到】 : 已经悲剧 : 题1:anagram of a palindrome 要求O(N) : int isAnagrmaOfPalindrome(char *string){ : unsigned int bitc = 0, i = 0; : int out = 0; : while(*string){ : i = *(string++) - 'a'; : bitc ^= (1 << i); : } : out = (int)(bitc & (bitc - 1));
|
o****o 发帖数: 8077 | 14 第二个不能用0--9的hash表么?
【在 c***z 的大作中提到】 : 已经悲剧 : 题1:anagram of a palindrome 要求O(N) : int isAnagrmaOfPalindrome(char *string){ : unsigned int bitc = 0, i = 0; : int out = 0; : while(*string){ : i = *(string++) - 'a'; : bitc ^= (1 << i); : } : out = (int)(bitc & (bitc - 1));
|
M*********9 发帖数: 15637 | 15 你给的反馈狠给力。。。
【在 c***z 的大作中提到】 : 来自jobvite的坑爹的HR说面SQL : codility的坑爹test给了这两题 : 我含着眼泪做完,以为能run就ok : submit了也没个comfirmation email什么的 : 最后自己抽抽了,给了各反馈说这test完全没有意义 : 综合以上,要是能过就是奇迹了
|
h*****7 发帖数: 6781 | 16 正解
所以说FLG最应该感谢的是NSF。
一个L1 penalty水过多少PhD码工,想想就觉得可笑。
【在 l*******m 的大作中提到】 : FLG其实没有DS,很多码公都是做ML的Phd
|
d******4 发帖数: 132 | 17 这是什么意思?
phd码工只问L1 penalty? 和NSF什么关系?
【在 h*****7 的大作中提到】 : 正解 : 所以说FLG最应该感谢的是NSF。 : 一个L1 penalty水过多少PhD码工,想想就觉得可笑。
|
j*******g 发帖数: 331 | 18 他是说compressive sensing是个大坑,无数NSF的人在填坑
【在 d******4 的大作中提到】 : 这是什么意思? : phd码工只问L1 penalty? 和NSF什么关系?
|
O*********y 发帖数: 923 | 19
如果偏重统计会不会和data analyst相似?我觉得DS会对编程要求很高(我最近在练习
编程)。认为算法远比naive programming重要,公司更喜欢optimal的程序
【在 z****e 的大作中提到】 : 算法是优化,ds要从乱七八糟不make sense的数据中弄成make sense : 算法其实不是特别重要,统计更重要 : 这种题也很扯蛋,估计是面官压根不懂ds
|
m*********a 发帖数: 3299 | 20 第一题的code,O(N)的算法
int isPalindrome(char *string){
int starting,ending;
starting=0;/*starting character of the string*/
ending=strlen(string)-1;/*ending character*/
while (starting
if (string[starting]==string[ending]){
starting++;
ending--;
} else return 0; /*This is not a Palindrome*/
}
return 1; /*This is a Palindrome*/
} |
|
|
a*******k 发帖数: 261 | |
m*********a 发帖数: 3299 | 22 第二题大家给个O(1)的算法吧?
我想到
N%10 parse出每个数字
然后给每个数字拍个序,从大到小
也要O(Nln(N)) |
t*********u 发帖数: 26311 | 23 这个我觉得就算扫描一遍每位上面的digit都要O(logN)吧
不然怎么知道最大的digit是多少呢
【在 m*********a 的大作中提到】 : 第二题大家给个O(1)的算法吧? : 我想到 : N%10 parse出每个数字 : 然后给每个数字拍个序,从大到小 : 也要O(Nln(N))
|
m*********a 发帖数: 3299 | 24 for positive integer>0
int i,temp;
int bucket[10]; /*create bucket to store of the total number of each 0-9*/
for (i=0;i<10;i++) bucket[i]=0;/*initiate bucket to 0*/
temp=N;
while (temp){
digit=temp%10;
bucket[digit]++;
temp/=10;
}
上面就要O(N)吧,是吧?
然后从bucket中取值,从大到小
【在 t*********u 的大作中提到】 : 这个我觉得就算扫描一遍每位上面的digit都要O(logN)吧 : 不然怎么知道最大的digit是多少呢
|
m*********a 发帖数: 3299 | 25 int largestSibling(int N){
int i,temp,digit;
int bucket[10]; /*create bucket to store of the total number of each 0-9
*/
for (i=0;i<10;i++) bucket[i]=0;/*initiate bucket to 0*/
temp=N;
while (temp){
digit=temp%10;
bucket[digit]++;
temp/=10;
} /*count the number of each digits*/
int j,output=0;
for (i=9;i>=0;i--)
for (j=bucket[i];j>0;j--){
output=output*10+i;
} /*read out the new largest number*/
return output;
}
这个估计不符合要求,和数字的大小有关
负数的话,反正读output 从bucket[0]到bucket[9] |
t*********u 发帖数: 26311 | 26 yes
int largestSibling(int N){
int i,temp,digit;
int bucket[10]; /*create bucket to store of the total number of each 0-9
*/
for (i=0;i<10;i++) bucket[i]=0;/*initiate bucket to 0*/
temp=N;
while (temp){
digit=temp%10;
bucket[digit]++;
temp/=10;
} /*count the number of each digits*/
int j,output=0;
for (i=9;i>=0;i--)
for (j=bucket[i];j>0;j--){
output=output*10+i;
} /*read out the new largest number*/
return output;
}
这个估计不符合要求,和数字的大小有关
负数的话,反正读output 从bucket[0]到bucket[9]
【在 m*********a 的大作中提到】 : int largestSibling(int N){ : int i,temp,digit; : int bucket[10]; /*create bucket to store of the total number of each 0-9 : */ : for (i=0;i<10;i++) bucket[i]=0;/*initiate bucket to 0*/ : temp=N; : while (temp){ : digit=temp%10; : bucket[digit]++; : temp/=10;
|
s****h 发帖数: 3979 | 27 我也不懂啥叫anagram,就搜了一下定义,发现是个很通用的编程面试题。
本来不难,就是算每个字符单双数。
然后找到这个页面,学习了:http://blog.csdn.net/liyonn8744/article/details/8139681
LZ应该也是做题前听说过这个搞法吧?
不然
bitc ^= (1 << i);
和
out = (int)(bitc & (bitc - 1));
都不容易想到
【在 m*********a 的大作中提到】 : 第一题的code,O(N)的算法 : int isPalindrome(char *string){ : int starting,ending; : starting=0;/*starting character of the string*/ : ending=strlen(string)-1;/*ending character*/ : while (starting: if (string[starting]==string[ending]){ : starting++; : ending--; : } else return 0; /*This is not a Palindrome*/
|