java - 如何检查一个数字是否在 1 到 N 之间

标签 java duplicates range permutation

我想检查 int[] 的选项卡是否是排列,这意味着 3 个特征:

首先,不要重复

第二,数字的范围应该在1到N(大小)之间

最后,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 之间的所有数字

最佳答案

我可以提供不同的解决方案吗?

尝试创建一个 tab.length 大小的 boolean 数组,每列代表一个应该在排列中的数字。现在在循环中,检查该数字是否已在临时数组中标记以及其大小是否正确。

这样,您可以验证所有数字都从 1 到 N + 没有重复。 最后,只需检查是否所有数组都已标记,并且您已经检查了所有内容。

祝你好运。

关于java - 如何检查一个数字是否在 1 到 N 之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16314228/

相关文章:

java - 如何在java spring boot中记录JSON对象?

Mysql将数据从一个表复制到另一个表,重复键更新不起作用,重复数据

python - 对于多维范围,是否有 Python 的 range(n) 等价物?

excel - 自动插入冒号(:) in multiple columns under the Options Explicit

java - 在模态 JDialog 之外时光标不正确?

java - 是否可以通过 JPA 创建、删除或更新 Oracle DB 用户?

java - 在 Spring Cloud for AWS SNS 中,在接收 SNS 消息时抛出 java.lang.IllegalArgumentException

mysql - 根据MySql中的条件值合并保留部分数据的重复记录

python - 删除/删除重复项,除非行包含特定字符串

ruby - Ruby "==="运算符在范围上的含义