zoukankan      html  css  js  c++  java
  • LeetCode268——MissingNum

      简单得很,但是我发现我的算法效率很低,其实还有很多地方需要完善的。一次排序,便利查找。发现了就返回。思路简单,效率嘛堪忧。

    class Solution {
    public:
        int missingNumber(vector<int>& nums)
        {
            sort(nums.begin(),nums.end());
            for(int i = 0;i != (nums.size() + 1);++ i)
            {
                if(i != nums[i])
                {
                    return i;
                }
            }
        }
    };

       上次聊到一个异或操作,我发现找数用这个特别方便,因为最大自然数我们已经知道了,就是nums的长度。那么最大的这个自然数,和0异或操作后得到0或者1,再用这个结果和nums中存储的数进行异或,假设这个数存在那么返回的就是0,假设这个数不存在返回的就是这个数。

    class Solution {
    public:
        int missingNumber(vector<int>& nums)
        {
            int len = nums.size();
            int xOR = len;
            for(int i = 0;i != len;++ i)
            {
                xOR ^= i;
                xOR ^= nums[i];
            }
            return xOR;
        }
    };

      卧槽,好像效率有所提高。不过这都是瞎猫抓死耗子,没点技术含量啊。

  • 相关阅读:
    线程唤醒
    以前、现在
    黑马程序员训练营基础测试
    流程图
    线程同步
    Thread联系
    Java线程
    Java中文件流笔记
    字符串习题
    匿名内部类
  • 原文地址:https://www.cnblogs.com/thewaytomakemiracle/p/5026501.html
Copyright © 2011-2022 走看看