欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-15 10:01:29
leetcode面试题17.04小白能回,通透,简易我看很多博主跟leetcode上面讲的一样,如果那个上面能看会,可能就不会又有人来这了,给大家分享一下我的解题思路,绝对相近,希望能帮到大家,如果能给个赞就更好啦package Test1;class Solution { public static void main(String[] args) { int[] nums={0,1,3}; System.out.println(missingNumber(...

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;
    }
}

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

本文地址:https://blog.csdn.net/weixin_45363671/article/details/110234142