这个(显而易见的)代码我写得很好,但出于测试目的,我应该让它适用于一百万"通过节省CPU周期并节省尽可能多的内存,在合理的时间内调整大小的数组
有什么建议吗?
!数组以升序排列!!!
import java.util.Arrays;
class A {
static boolean exists(int[] ints, int k) {
for(int integer : ints){
if(integer == k){
return true;
}
}
return false;
}
答案 0 :(得分:1)
您可以使用依赖于哈希的Set<Integer>
而不是依次迭代的数组。
static boolean exists(Set<Integer> ints, int k) {
return ints.contains(k);
}
您可以将数组转换为Set
并根据需要将其传递给方法多次:
Set<Integer> set = Arrays.stream(ints).boxed().collect(Collectors.toSet());
boolean isExist = exists(set, 15);
...
isExist = exists(set, 5005);
...
isExist = exists(set, 355);
答案 1 :(得分:1)
由于你的数组是按升序排列的,你可以做的一件事(我认为)是进行二分搜索而不是线性搜索。