找出数组是否包含唯一元素
To find out if array contains unique elements
我试图查明数组中的所有元素是否都是唯一的。
PS : 我还是菜鸟。所以,如果有错误的做法,请忽略。
public static boolean isUnique(int[] arr)
{
Integer[] integ = new Integer[arr.length];
for (int i = 0; i < arr.length; i++)
{
integ[i] = arr[i];
}
Set<Integer> temp = new HashSet<Integer>(Arrays.asList(integ));
for (int j = 0; j < integ.length; j++)
{
temp.add(integ[j]);
}
if(temp.size()==arr.length)
{
return true;
}
else return false;
除了一些冗余代码外,您的原始 isUnique()
没有任何问题。
您的问题是 SolveMagicSquare
的内部循环仅分配给 currentRow
数组的单个索引。根据您的问题,您使用的是 4x4 阵列。前两次调用 isUnique(currentRow)
,currentRow
仍然包含 2 个或更多 0,因为 currentRow
的最后两个索引尚未初始化。这就是为什么 isUnique()
returns false.
您可能想要更改
currentRow[i] = input1[i][j];
到
currentRow[j] = input1[i][j];
或刚刚过去 input[i]
到 isUnique()
并消除 currentRow
和内部循环。
使用 Java-8 方法会容易得多:
public static boolean isUnique(int[] arr) {
return IntStream.of(arr).distinct().toArray().length == arr.length;
}
我试图查明数组中的所有元素是否都是唯一的。 PS : 我还是菜鸟。所以,如果有错误的做法,请忽略。
public static boolean isUnique(int[] arr)
{
Integer[] integ = new Integer[arr.length];
for (int i = 0; i < arr.length; i++)
{
integ[i] = arr[i];
}
Set<Integer> temp = new HashSet<Integer>(Arrays.asList(integ));
for (int j = 0; j < integ.length; j++)
{
temp.add(integ[j]);
}
if(temp.size()==arr.length)
{
return true;
}
else return false;
除了一些冗余代码外,您的原始 isUnique()
没有任何问题。
您的问题是 SolveMagicSquare
的内部循环仅分配给 currentRow
数组的单个索引。根据您的问题,您使用的是 4x4 阵列。前两次调用 isUnique(currentRow)
,currentRow
仍然包含 2 个或更多 0,因为 currentRow
的最后两个索引尚未初始化。这就是为什么 isUnique()
returns false.
您可能想要更改
currentRow[i] = input1[i][j];
到
currentRow[j] = input1[i][j];
或刚刚过去 input[i]
到 isUnique()
并消除 currentRow
和内部循环。
使用 Java-8 方法会容易得多:
public static boolean isUnique(int[] arr) {
return IntStream.of(arr).distinct().toArray().length == arr.length;
}