Java数组索引元素下标快速高效的方法

来源:互联网 发布:淘宝子账号权重设置 编辑:程序博客网 时间:2024/06/07 14:37

今天去梦想小镇面试一家社交APP。

面试时出了一道简单的题。

给定一个数组[1,2,3,4,6,7,8,9.........]  N多个数字

找出其中>=5(这是举例的 也可能是10)的第一个数的下标

我当时心想这简单啊,for循环遍历,当时要我写代码。

匆匆忙忙的写了

int num = 5;
Integer [] nums = new Integer[]{1,2,3,4,6,7,8,9};

for(int index=0;i<nums.length();i++){

if(nums[i]>=num){

System.out.println(index);

}

}

当时心想不会这么容易,结果面试人问有没有快速高效的方法,

我当时思考了半天,确实,如果数组很长,找的数在最后面这样很慢,

我就说用二分查找法,从数组中间查看,看这个数在前面还是后面,接着一直查,知道找到。

但是这样的话代码还是很复杂,但效率会快些。

回来以后,自己摸索了下,写下了如下的代码:

int num = 5;
Integer [] nums = new Integer[]{1,2,3,4,6,7,8,9};
List<Integer> list = new ArrayList<>(Arrays.asList(nums)); 
int index = list.indexOf(num);
if(index>0)
System.out.println(index);
else{
list.add(num);
Collections.sort(list);
int c = list.indexOf(num);
System.out.println(c);
}

这样的效率应该是高了很多。

不知道大家是否还有其他更好的方法,欢迎交流分享!

0 0