leetcode面试题17.04小白能回,通透,简易,res的思路

leetcode面试题17.04小白能回,通透,简易

我看很多博主跟leetcode上面讲的一样,如果那个上面能看会,可能就不会又有人来这了,给大家分享一下我的解题思路,绝对相近,希望能帮到大家,如果能给个赞就更好啦

package Test1;

class Solution {
    public static void main(String[] args) {
        int[] nums={0,1,3};
        System.out.println(missingNumber(nums));
    }
    public static int missingNumber(int[] nums) {
        int res = 0;
        /**
         * res=res^i^s;如果i s一样的话那么i和s就消失 也就是res=res
         * 这道题就利用了这点 若果不一样返回的是按位计算的值  什么叫按位计算?
         * 2  (0010)   3(0011)
         * 2^3=1
         */
        for (int i = 0; i < nums.length; ++i) {
            res ^= i;
            res ^= nums[i];
        }
        /**
         * 很多人最下面这部卡住了吧 我也是卡了半个小时 最后是出来的 以第一个例子
         * {0,2,3}
         * 经过循环之后的异或是
         * 0^0 1^2 2^3  对吧 是这样的 但是观察你就会发现有一个最大的3也就是长度消不掉
         * 这时候就需要我们再异或一个长度来抵消掉这个对于的3 就可
         * 0^0 1^2 2^3 ^3
         */
      res ^= nums.length;
        return res;
    }
}

希望大家给个赞支持一下 笔芯笔芯

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值