输入一组数,找到这组数的最大值,并返回它的索引
我写的代码
class Solution {
public int peakIndexInMountainArray(int[] A) {
int i = 0;
while (A[i] < A[i+1]) i++;
return i;
}
}
这个运行时间是3ms
下面这个是1ms的代码
class Solution {
public int peakIndexInMountainArray(int[] A) {
int middle = A.length / 2;
int i = middle;
while(i < A.length - 1 && i > 0) {
if(A[i] < A[i + 1]) {
i++;
} else if(A[i] < A[i - 1]) {
i--;
} else {
break;
}
}
return i;
}
}
其实我不太理解这个,即有while循环,又有for循环,为什么运行时间会远远小于我的只有while循环呢?
好像懂了,因为我的代码没有数组长度的判断,一旦数组越界,JVM可能不知道什么时候运行完毕了
class Solution {
public int peakIndexInMountainArray(int[] A) {
int i = 0;
while (A[i] < A[i+1]&&(i<A.length))
i++;
return i;
}
}