zoukankan      html  css  js  c++  java
  • 268. Missing Number

    268. Missing Number

    Given an array containing (n) distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.

    For example,
    Given nums = [0, 1, 3] return 2.

    Note:
    Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?

    题意: 从0..n中随机选n个不同的数入数组, 注意:数组乱序. 找出缺失的那个数.
    三种方法, XOR, sum, 二分查找(要求数组sorted).

    人家牛逼想法:XOR
    XOR 相同为0不同为1.
    0 ^ 1 ^ 2 ^ 3 ^ 2 ^ 1 ^ 0 = 3.

    (O(n)) time, (O(1)) extra space. 比下面的sum还快.

    // xor 位运算
    int missingNumber(vector<int>& A) {
        int re = 0;
        for (int i = 1; i <= A.size(); i++)
            re = re ^ i ^ A[i - 1];
        return re;
    }
    

    SUM方法:
    (O(n)) time, (O(1)) extra space.

    // 0..size()和 - 数组和
    int missingNumber(vector<int>& A) {
        int sum = 0, n = A.size();
        for (int i = 0; i < n; i++)
            sum += A[i];
        int re = (n * (n + 1)) / 2 - sum;
        return re;
    }
    
  • 相关阅读:
    TDengine社区版
    进程&线程
    I2总线
    S3C2440的GPIO编程
    NPN&PNP
    旁路电容和去耦电容
    战胜C语言中令人头疼的问题
    今天神经有点大。。
    JZs3c2440裸板程序GPIO操作总结
    JZs3c2440学习笔记一
  • 原文地址:https://www.cnblogs.com/ZhongliangXiang/p/7356536.html
Copyright © 2011-2022 走看看