1. 程式人生 > >大型網際網路演算法面試題

大型網際網路演算法面試題

經過一些大型的網際網路公司的面試,發現他們已經非常死板的效仿了國外的面試經驗,在最後的時候一般都會涉及到幾個演算法題,不管他們自己會不會,哈哈

我在這裡僅為mark一下,以備將來有兄弟能用到幫你一把,我會逐漸的更新文章

一、豌豆莢

1、排序好的兩個連結串列,求交集,我才用的是演算法複雜度為m+n的,程式碼如下

int[] a = new int[] { 1, 2, 3, 4, 8, 10 };
int[] b = new int[] { 6, 8, 10 };
int i = 0, j = 0;
while (true) {
    if (a[i] > b[j]) {
	j++;
    } else if (a[i] < b[j]) {
	i++;
    } else {
	System.out.println("a[" + i + "]=" + a[i] + ",b[" + j + "]=" + b[j]);
	i++;
	j++;
    }
    if (i >= a.length || j >= b.length) break;
}


2、給定一個長度為 n 的陣列 a[],求出 a[i] - a[j] 的最大值,其中 i > j。

int min = a[0];
int tmp = a[0];
int maxDiff = a[1] - a[0];
for (int i = 0; i < a.length; i++) {
    if (min > a[i]) min = a[i];
    tmp = a[i] - min;
    if (maxDiff < tmp) maxDiff = tmp;
}




待續。。。