Missing Number 三种解法

题目链接:https://leetcode.com/problems/missing-number/

解法1)根据不缺失情况下的数字和-缺失情况下的数字和就是缺失的数字,代码如下:

class Solution
{
public:
    int missingNumber(vector<int>& nums)
    {
        int n = nums.size();
        int sum = 0;
        for(int i=0; i<n; ++i)
        {
            sum += nums[i];
        }

        int total = 0;
        for(int i=0; i<=n; ++i)
        {
            total += i;
        }
        return total - sum;
    }
};

解法2)使用异或来解决,首先1~n先进行一次异或,然后对数组中的数字再异或一次,由于a^a得到的是0,因此有一个数字在异或过程中无法消除,该数字即为缺失的数字,代码如下:

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

解法3)使用二分搜索,但是本题的要求是O(n)的时间复杂度,不符合要求,但是如果数组已经是有序的,则二分搜索将成为最好的算法,代码如下:

class Solution
{
public:
    int missingNumber(vector<int>& nums)
    {
        sort(nums.begin(), nums.end());
        int l = 0;
        int r = nums.size() - 1;
        while(l < r)
        {
            int m = l + ((r - l) >> 1);
            if(nums[m] == m)
            {
                l = m + 1;
            }
            else
            {
                r = m - 1;
            }
        }
        int res = l == nums[l] ? l + 1 : l;
        // 如果是l == nums[l] 说明缺少的是最后一个数字
        return res;
    }
};

 

转载于:https://www.cnblogs.com/shirley-ict/p/5475258.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误提示意思是缺少数字,被当做零处理。 解决方法是在 \begin{subfigure}{0.24\linewidth} 后面补充合适的数字。例如 \begin{subfigure}{0.24\linewidth}[a],其中 [a] 表示编号。 ### 回答2: 当出现 "Missing number, treated as zero." 的报错信息时,意味着在使用 LaTeX 进行排版时,缺少了一个数字,并且被当作零处理了。而报错的具体位置是在 "\begin{subfigure}{0.24\linewidth}" 这一行。 要解决这个问题,我们需要找到导致报错的原因,并采取适当的措施来修复它。 首先,我们需要确认 "\begin{subfigure}{0.24\linewidth}" 这一行的语法是否正确。在 LaTeX 中,"\begin{subfigure}{0.24\linewidth}" 用于创建一个包含子图的环境,并指定子图的宽度为当前行宽的24%。确保该行没有拼写错误、语法错误或缺少任何必要的参数。 其次,检查该行之前是否有任何地方的数字输入错误导致了这个错误。有时候,在具体位置的前面或其他地方的数字错误可能会引起这个错误,因为 LaTeX 需要一个完整、正确的数字作为参数。 此外,还可以尝试将子图的宽度参数从 "0.24\linewidth" 修改为其他有效的值,并观察是否仍然出现报错。这样可以确保宽度参数不是导致错误的原因。 最后,如果以上措施都无法解决问题,可以尝试查看包含当前 LaTeX 文件的其他文件或代码,看是否有任何可能引起此报错的地方。 总之,在解决 "Missing number, treated as zero." 的报错时,需要仔细检查语法、拼写、参数和相关代码,以确定导致错误的原因,并进行适当的修复。 ### 回答3: 这个报错是LaTeX中常见的错误,通常是因为在使用subfigure环境时出现了问题。出现这个错误的原因可能有以下几种情况: 1. 未正确引入subcaption宏包:在导言区中应该引入\usepackage{subcaption},以便正确使用subfigure环境。 2. 缺少\caption命令:在subfigure环境中,每个子图都需要有一个\caption命令来添加图标题。如果某个子图没有添加\caption命令,就会提示Missing number, treated as zero错误。 3. 子图数量超过了设置的限制:在subfigure环境中,使用\begin{subfigure}{0.x\linewidth}命令设置每个子图所占的宽度。如果所有子图的宽度之和超过了1,就会出现该错误。需要调整每个子图的宽度,确保其总和小于等于1。 解决这个问题的方法如下: 1. 确认是否正确引入了subcaption宏包,如果没有引入,则在导言区添加\usepackage{subcaption}。 2. 检查每个子图是否都添加了\caption命令,并且确保每个\caption的内容不能为空。 3. 如果子图数量较多,可以考虑调整每个子图的宽度,确保其总和小于等于1。 4. 如果以上步骤都没有解决问题,可以尝试重新编译LaTeX文档,有时候这个错误只是暂时性的,重新编译可以解决。 总之,Missing number, treated as zero错误通常是由于subfigure环境使用不正确导致的。根据具体的错误提示和上述解决方法,逐步排查问题,就可以解决这个报错。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值