Java数组索引元素下标快速高效的方法
今天去梦想小镇面试一家社交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);
}
这样的效率应该是高了很多。
不知道大家是否还有其他更好的方法,欢迎交流分享!
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: nginx中的try_files指令解释
- 下一篇: java得到元素在数组中的索引值