我的任务是确定 1、2、3...n 中的每个值是否在无序 int 数组中。我不确定这是否是解决此问题的最有效方法,但我创建了一个名为 range 的 int[],它只包含 1-n 中的所有数字,顺序为 range[i] (range[0]=1 , 范围 [1]=2, 等)。然后我尝试使用 containsAll 方法来检查我的给定数字数组是否包含范围数组中的所有数字。但是,当我对此进行测试时,它返回 false。我的代码有什么问题,解决这个问题的更有效方法是什么?
public static boolean hasRange(int [] givenNums, int[] range) {
boolean result = true;
int n = range.length;
for (int i = 1; i <= n; i++) {
if (Arrays.asList(givenNums).containsAll(Arrays.asList(range)) == false) {
result = false;
}
}
return result;
}
(我很确定我应该手动执行此操作而不是使用 containsAll 方法,所以如果有人知道如何以这种方式解决它,那将特别有帮助!)
以下是此方法对任何好奇的人的暗示:
public static void checkMatrix(int[][] intMatrix) {
File numberFile = new File("valid3x3") ;
intMatrix= readMatrix(numberFile);
int nSquared = sideLength * sideLength;
int[] values = new int[nSquared];
int[] range = new int[nSquared];
int valCount = 0;
for (int i = 0; i<sideLength; i++) {
for (int j=0; j<sideLength; j++) {
values[valCount] = intMatrix[i][j];
valCount++;
}
}
for (int i=0; i<range.length; i++) {
range[i] = i+1;
}
Boolean valuesThere = hasRange(values, range);
values打印的时候有false。
最佳答案
你说你有一个一维数组对吗? 好的。那我觉得你想的太复杂了。 我尝试向您解释另一种检查数组中的所有数字是否按数字顺序排列的方法。
例如,您的数组具有以下值:
int[] array = {9,4,6,7,8,1,2,3,5,8};
首先,您可以使用以下命令订购 Array simpel
Arrays.sort(array);
完成此操作后,您可以遍历数组并与索引进行比较(在方法中):
for(int i = array[0];i < array.length; i++){
if(array[i] != i) return false;
关于java - 检查数组中是否存在范围内的所有值的最佳方法是什么? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39383949/