在java中检查一个数组——它是否为filter
Check an array in java it is filter or not
问题:如果数组满足以下条件,则将其定义为Filter数组
- a。如果它包含9,那么它也包含11
- b。如果它包含7,那么它不包含13
因此,{1,2,3,9,6,11}和{3,4,6,7,14,16},{1、2、3、4、10、11、13}和{3、6、5、13、6、13}是滤波器阵列。以下数组不是Filter数组:{9,6,18}(包含9但不包含11),{4,7,13}(同时包含7和13)编写一个名为isFilter的函数,如果其数组参数是Filter数组,则返回1,否则返回。
这是我的解决方案,你能给我提供最有效的解决方案吗?告诉我我的逻辑在这里有多有效?不允许使用内置函数和排序等,只允许使用Java上的核心逻辑,在c或c++中也可以。解决方案
static int isFilter(int[] a){
int i,len=a.length,j,result=1,found9=0,found11=0,found7=0,found13=0;
for(i=0;i<len;i++){
if(a[i]==9 ){
found9=1;
for(j=0;j<len; j++){
if(a[j]==11){
found11=1;
}
}
}
if(a[i]==7){
found7=1;
for(j=0;j<len;j++){
if(a[j]==13){
found13=1;
}
}
}
}
if(found9==1 && found11!=1){
result=0;
}
if(found7==1 && found13!=0){
result=0;
}
return result;
}
mb更高效的
static int isFilter(int[] a){
boolean found9 = false, found11 = false, found7 = false, found13 = false;
for (int i = 0; i < a.length; i++) {
switch (a[i]) {
case 7:
found7 = true;
break;
case 9:
found9 = true;
break;
case 11:
found11 = true;
break;
case 13:
found13 = true;
break;
}
}
if(found9 && found11) return 1;
if(found7 && !found13) return 1;
return 0;
}
相关文章:
- 如何找到大小'x'数组是否完全填充,在C++?
- 任意大小的 constexpr 数组是否可以用作 switch 语句中的案例?
- 在 constexpr 构造函数中初始化数组是否合法?
- 以这种方式初始化的 char 数组是否会自动添加空终止符?
- 检查反向数组是否与原始数组相同
- 如何检查二维字符数组是否有空字
- 检查数组是否等于的最快方法?
- 确定数组是否可以旋转 3 个连续的数组元素进行排序?
- 如何检查数组是否包含多个元素?
- 我在代码中收到一个运行时错误,该错误如何通过修改最多一个元素来查找数组是否可以变得不减少
- c ++ 如何断言 char 数组与否,检查 char 数组是否以 "0" 开头或包含"0"
- 下课时的数组是否可以正常工作?
- C++全局常量数组:是否保证合并(优化)到一个副本中
- 在 C++17 中声明大小为 0 的数组是否合法
- 如果在执行过程中替换二进制文件,"const"数组是否驻留在内存中?
- 临时数组是否可能
- 使用二维数组作为一维数组是否正确?可能会导致未定义的行为左右?
- 当有多个查询时,检查某些子数组是否排序的有效方法是什么?
- 用于检查 char 数组是否仅包含允许的字符的函数
- 检查数组是否'right' (C++)