- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我从here获得的代码示例.
public class Snippet {
private static final int[] ARRAY = {1, 4, 3, 18, 2, 8, 9, 6, 5, 10,
11, 12, 13, 14, 15, 16, 17, 19, 0, 20};
//{1,2,4,5,6,8,7,9,3}
private int getMissingElem() {
int XOR = 0;
for (int i = 0; i < 20; i++) {
if (ARRAY[i] != 0) {
XOR ^= ARRAY[i];
}
XOR ^= (i + 1);
}
return XOR;
}
public static void main(String[] args) {
Snippet s = new Snippet();
System.out.println(s.getMissingElem());
}
}
我刚刚知道如何XOR
获得数组中缺失元素的值。
最佳答案
XOR 是按位。这意味着,给定两个整数值 a, b
, a ^ b
有一个1
当且仅当 a
的该位置上的位或b
是 1
,但不能两者兼而有之。
值 15 将按位(为简单起见,这里使用 8 位)表示为 00001111
,而值 60 将按位表示为 00111100
。请注意15 ^ 60
等于 00110011
,因为位 2-3 等于 1
仅适用于 15,位 6-7 等于 0
仅限 60 人。
对于有关查找数组缺失元素的问题,只有当数组包含整数 1 到 ARRAY.length
时,它才有效。除了一个整数为 0(前提条件)。
a ^ b ==
b ^ a
,和(a ^ b) ^ c == a ^ (b ^ c) == a ^ b ^ c)
a, b, c
。另外,如果对同一个数字进行异或两次,则会取消出,结果变为0。给定任何数字n
, n ^ n == 0
,还有a ^ n ^ n == a
.a
, a ^ 0 == a
因为如果 a
的这一点是 1
,该位置恰好有一位是 1
.基于 XOR 的解决方案背后的逻辑是,对于此数组中包含的所有数字,您对同一数字执行了两次 XOR,结果相互抵消。唯一的异常(exception)是缺少号码 n
,如 0 ^ n
等于 n
.
假设ARRAY
是满足前提条件的数组:
情况1:号码m
出现在数组中。执行 XOR 的条件 (*) 是当循环位于 i
时。这样的位置 ARRAY[i] == m
或访问m - 1
th 位置。我们有XOR ^ m
当第一次满足条件时。随着循环的进行,相同的条件再次满足,因此我们有 XOR ^ m ^ k ^ m == XOR ^ (m ^ m) ^ k == XOR ^ k
,其中k
是对满足条件的第一个索引和第二个索引之间的数字进行异或的结果。
情况2:号码n
数组中缺失。请注意,当您迭代循环时,前面的条件 (*) 仅满足一次。因此我们有XOR ^ n
.
由于 XOR 具有交换律和结合律,所以我们最终得到的结果是 XOR == a^a^b^b^...^n...^x^x^y^y
。注意除 n
之外的所有数字当循环结束时进行异或两次,我们有 (a^a)^(b^b)^...^n^(x^x)^(y^y) == 0^0^...^n^...0^0
,因此我们得到n
根据需要。
关于java - 在数组中查找缺失值时无法理解 `XOR` 背后的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50296429/
XOR 的各个部分如何命名? A xor B = C A和B叫什么 对于分部,它是: A / B = C A = 除数,B = 被除数,C = 商 对于和(和 XOR 与和一样对称)它是 A + B
我在算法方面遇到了问题。 我有一个用于 IO 的字节,可以使用称为 XorAndXor 的方法设置其中的某些位。该算法的工作原理如下: newValue = (((currentValue XOR x
我很惊讶地看到一个 BPMN 图,其中一个异或决策(“XOR-Split”)用相同的网关符号“关闭”。 我真的想知道证明这种方法合理的原因是什么。在我看来,这是多余的。 事实似乎是,XOR-Join
我在查看 XOR 链接列表的实现时多次遇到这段代码,但似乎没有一个人正确解释了这一行(或者也许我错过了一些东西) - struct node* XOR (struct node *a, struct
这应该是一个简单的问题。我是 Coq 的新手。 我想在 Coq 中定义exclusive or in Coq(据我所知,这不是预定义的)。重要的部分是允许多个命题(例如 Xor A B C D)。 我
我试图记住数学是如何计算出来的,以计算循环冗余检查中 XOR 算法的剩余部分,以验证网络消息的剩余位。 我不应该扔掉那本教科书。 这在代码中很容易完成,但是如何手工完成呢? 我知道它看起来有点像标准除
给定一个数字 N 和一个整数数组(所有整数都小于 2^15)。 (A 是数组 100000 的大小) 从数组中找到 N 和整数的最大 XOR 值。 Q是查询次数(50000)和开始,停止是数组中的范围
这更像是一个有趣的问题。我正在研究 SC61860 CPU,它是 8 位 CPU,用于 1987 年的 Sharp PC-1360 掌上电脑(也用于 PC-1401 和 1403)。它的指令集实际上并
我正在尝试在 c 中进行某种异或文件加密,并在 javascript 中进行解密(使用 this 作为基础,现在我遇到了以下问题: 例如我想在 C 中执行 73^122,结果是 57,但在 javas
我的任务是计算数组中字节的异或和: X = char1 XOR char2 XOR char3 ... charN; 我正在尝试将其并行化,改为对 __m128 进行异或运算。这应该提供加速因子 4。
我有一系列错误或 View ( Seq[Xor[Error,View]] ) 我想将其映射到第一个错误(如果有)或 View 序列的异或 ( Xor[Error, Seq[View]] ) 或者可能只
这是我想做的一个例子:假设我有 5 个类,我想表达这样的约束,即我们可以将类“B”或/和“C”的实例链接到“A”,如果是这样,我们就不能拥有其他任何东西,如果我们不这样做没有这些类的任何实例,我们只能
因此我们可以确定异或距离度量是一个真实的度量(它是对称的,满足三角不等式等) 在阅读 Kademlia 及其 k-buckets 之前,我在想每个节点都会简单地找到自己的 id 并存储其最近的 k 个
该函数用于计算一个32位整数的异或 int xor32int(int x, int y) { int res = 0; // Initialize result // Assuming
我是加密新手,我正在尝试解释以下代码。即, 是什么?什么意思? 我有一个 secret_key key 。我也有一个 unique_id。我使用下面的代码创建垫。 pad = hmac.new(sec
我正在尝试将一些 javascript 代码复制到 python 中,由于某种原因,javascript 中的 XOR 运算符 (^) 给我的值与 python 中的 XOR 运算符 (^) 不同。我
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
这个问题在这里已经有了答案: Does Typescript support mutually exclusive types? (7 个答案) 关闭 3 年前。 我怎么说我希望一个接口(inter
我有一些未知的 C++ 代码是在发布版本中编译的,因此对其进行了优化。我正在努力解决的问题是: xor al, al add esp, 8 cmp byte ptr [ebp+
我得到了以下卡诺图,但我仍然无法从每个表中计算 XOR 的表达式。 Table 1 -------
我是一名优秀的程序员,十分优秀!