经过一些大型的互联网公司的面试,发现他们已经非常死板的效仿了国外的面试经验,在最后的时候一般都会涉及到几个算法题,不管他们自己会不会,哈哈
我在这里仅为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;
}
待续。。。