• 算法


    1. 给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。

    class Solution {
        public int missingNumber(int[] nums) {
            int temp = 0;
            for(int i = 0;i < nums.length;i++){
                temp = temp ^ (i + 1) ^ (nums[i]);
            }
            return temp;
        }

    运用位运算来完成,思路为temp ^ nums[ i ] ^ (i + 1),这里的temp值从0开始,因为nums 的值是从0开始,而(i + 1)则是为了取到自然数1,2,3,4,5...等

    运算规则如下:

    假如目标数组nums 值 为 0,1,2,4

    自然数对应为1, 2,3,4

    0 ^ 1 ^ 0 = 1

    1 ^ 2 ^ 1 = 2

    2 ^ 3 ^ 2 = 3

    3 ^ 4 ^ 4 = 3

    ————————————————
    版权声明:本文为CSDN博主「Light丶Long」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/lin140611/article/details/89979742

  • 相关阅读:
    Linux快速入门(七)效率工具(Vim)
    SQLILABS(Less6)
    SQLILABS(Less5)
    SQLILABS(Less1)
    Linux快速入门(八)效率工具(SSH)
    SQLILABS(Less2)
    SQLILABS(Less4)
    【Leetcode】768. 最多能完成排序的块 II
    SQLILABS(Less7)
    SQLILABS(Less3)
  • 原文地址:https://www.cnblogs.com/cjjjj/p/12405792.html
Copyright © 2020-2023  润新知