攒RP ing
一场面试的一道算法题,题目如下:
有两个升序的数组,在这两个数组里面有且只有一个相同的元素,考虑时间和空间复杂度,找到该元素,禁用JS中所有方法,单纯算法题(emmmmm,为何和我之前的不一样)话不多说,上代码,我真是越来越喜欢动手敲一下了:
function foo(arr_1, arr_2) {
var j =0;
for(var i=0;i<arr_1.length;i++){
if(arr_1[i] === arr_2[j]){
return arr_1[i];
break;
} else if(arr_1[i] > arr_2[j]){
j++;
if(j === arr_2.length){
break;
}
} else if(arr_1[i] < arr_2[j]){
continue;
}
}
if(i === arr_1.length || j === arr_2.length){
return null;
}
}
思路:
实现两个指针,i和j,分别从两个数组开始,为了方便书写,下面只用i和j代表它们指向的元素,如果i与j相等,直接输出,如果i大于j,需要j向后移,如果i小于j,需要i向后移,异常结束条件为其中至少一个数组遍历完毕。
PS 2020-09-16 58 !
可惜了,没想到最后的结果,可能是好久敲过算法了,也可能是过于紧张,攒攒RP了。