今天朋友让我给写个面试的笔试题,写后感觉很low希望各位大神给予指点。互相学习。
原题 : 给定一个排好序的数组,同时给定一个要查找的数,找出这个数在数组中出现的起始位置和结束位置。算法的时间复杂度是log(N)。如果没有找到就返回[-1,-1]
比如给定[5,7,7,8,8,10],需要查找的值为8,返回:[3,4]
下面是我写的代码
public static void main(String[] args) {
//x 为整数 随便定义
int b = x;
int[] a = {5,7,7,7,8,8,10};
int[] c = new int[2];
//起始位置
int i = find(a,a.length,b,1);
//结束位置
int j = find(a,a.length,b,2);
c[0] = i;
c[1] = j;
//起始位置和结束位置相同
if (i == j) {
c[0] = i;
c[1] = -1;
}
};
public static int find(int[] a, int length, int b,int type) {
if (type == 1) {
for (int i = 0; i < length; i++) {
if (a[i] == b) {
return i;
}
}
} else if (type == 2) {
for (int j = length-1; j>=0;j--) {
if (a[j]==b) {
return j;
}
}
}
return -1;
}