如何使用 BITWISE 运算符删除数组中的重复元素?
How to remove duplicate elements in an array using BITWISE operators?
我只是在想,也许我们可以使用按位运算符删除重复的数字。这可能吗?例如,如果我们有相同的数字,则使用异或,我们可以将其设为零
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]);
}
}
}
我卡住了。谁能帮我解决这个问题?
- 同数则异或为零;那不是删除数字,只是使它成为
0
(如果不允许零可能有用,但它仍然没有被删除)
示例:输入 1
、1
将导致数组 中有 [1, 0, ...]
- 如果不是相同的数字,则 XOR 生成一个(总的)不同的数字
示例:输入 1
和 2
将导致数组 中有 [1, 3 ,...]
- 该算法只将输入的值与数组的最后一个条目进行比较,而不是针对任何先前的条目进行测试
示例:输入 1
、2
、1
将导致数组 中有 [1, 2, 1, ...]
回答:甚至有可能,但我认为实现起来和理解起来都不容易
我只是在想,也许我们可以使用按位运算符删除重复的数字。这可能吗?例如,如果我们有相同的数字,则使用异或,我们可以将其设为零
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]);
}
}
}
我卡住了。谁能帮我解决这个问题?
- 同数则异或为零;那不是删除数字,只是使它成为
0
(如果不允许零可能有用,但它仍然没有被删除)
示例:输入1
、1
将导致数组 中有 - 如果不是相同的数字,则 XOR 生成一个(总的)不同的数字
示例:输入1
和2
将导致数组 中有 - 该算法只将输入的值与数组的最后一个条目进行比较,而不是针对任何先前的条目进行测试
示例:输入1
、2
、1
将导致数组 中有
[1, 0, ...]
[1, 3 ,...]
[1, 2, 1, ...]
回答:甚至有可能,但我认为实现起来和理解起来都不容易