首页 > 其他 > 详细

LeetCode268——MissingNum

时间:2015-12-07 17:48:49      阅读:117      评论:0      收藏:0      [点我收藏+]

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

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

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

LeetCode268——MissingNum

原文:http://www.cnblogs.com/thewaytomakemiracle/p/5026501.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!