我想检查天气一个 int[] 选项卡是否是一个排列,这意味着 3 个特征:
首先,没有重复
二、数字的范围应该在1到N(size)之间
最后,1 到 N 之间的所有数字都应该出现在排列中
例如 2 2 3 不是排列,因为 2 是重复的, 2 3 4 不是排列,因为 4>N=3 ,也因为缺少数字 1 ...
到目前为止,我修复了重复和范围问题,但我仍然需要强制 1 和 N 之间的所有数字出现在排列中,这是到目前为止的代码:
public static boolean isperm(byte[] tab){
for (int i=0;i<tab.length;i++){
if (tab[i]>=1 && tab[i]<=tab.length ) {
for (int j=0;j<tab.length;j++) {
for (int k=j+1;k<tab.length;k++) {
if (tab[k]==tab[j]){ // or use .equals()
return false;
}
}
}
return true;
} else {
return false;
}
}
return false;
}
所以我的问题是验证 int[] 中存在 1 和 N 之间的所有数字的测试