美文网首页
面试题 17.04. 消失的数字

面试题 17.04. 消失的数字

作者: itbird01 | 来源:发表于2022-01-26 06:18 被阅读0次
    题目.png

    题意:数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?

    解法1:
    我们假设数组异或结果为 123...^1000 = T (此时的T中包含两个n),那么根据结合律和自反律,T^n 实际上就是1~1000的实际值的异或结果,原因的话,很简单,T中的两个n异或之后为0,也就是说T中已经没有n了,所以 T^n == 1~1000的实际值的异或结果
    由上面的推导可知,我们把T再和1~1000的异或结果 去异或,则为所求的结果n

    解题遇到的问题

    后续需要总结学习的知识点

    ##解法1
    class Solution {
        public int missingNumber(int[] nums) {
            int k = nums.length, k1 = 0;
            for (int i = 0; i < nums.length; i++) {
                k = k ^ i;
                k1 = k1 ^ nums[i];
            }
            return k ^ k1;
        }
    }
    

    相关文章

      网友评论

          本文标题:面试题 17.04. 消失的数字

          本文链接:https://www.haomeiwen.com/subject/gevbhrtx.html