java—如何使用位运算符删除数组中的重复元素?

siv3szwd  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(345)

我在想也许我们可以用位运算符去掉重复的数字。这可能吗?

例如,使用异或,如果我们有相同的数字,我们可以使之为零 a[i] = number ^ scanner.nextInt() ```
import java.util.*;
class Main {
public static void main(String[] args) {

Scanner s = new Scanner(System.in);
int n = 6;
int[] a = new int[n];
 System.out.println("Enter array elements:");
a[0] = s.nextInt();
for(int i=1;i<n;i++){
  a[i] = a[0] ^ s.nextInt();
}
for(int i=0;i<n;i++)
{
  System.out.println(a[i]);
}

}
}

我卡住了。有人能帮我吗?谢谢!
pkln4tw6

pkln4tw61#

如果是同一个数,则xor使其为零;这并不是删除数字,只是让它 0 (如果不允许为零,则可能有用,但仍然没有删除)
示例:输入 1 , 1 会导致 [1, 0, ...] 在数组中
如果不是同一个数,则“异或”产生一个不同的数
示例:输入 1 以及 2 会导致 [1, 3 ,...] 在数组中
该算法只将输入的值与数组的最后一个条目进行比较,而不与之前的任何条目进行测试
示例:输入 1 , 2 , 1 会导致 [1, 2, 1, ...] 在数组中
答:这甚至是可能的,但我认为这既不简单,也不容易实现,也不容易理解

相关问题