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?

这个题目最容易想到的算法是利用一个大小为n+1的辅助数组,原数组中出现了一个数字就在辅助数组中对应的位置做标记,这样就只需要扫一遍原数组再扫一遍辅助数组就能得到答案,但是这个算法浪费了太多空间,而且事先也不好缺定辅助数组的大小,所以这不是一个好方法。

另一种比较简单的算法是给数组排序,然后按顺序检查数组中的元素就能得到答案,但是这种算法的时间复杂度比较高。

我最后使用的算法是根据数组的大小确定n的值,然后计算从1加到n的值得到sum1,然后再将数组中的每个元素加起来得到sum2,最后sum1-sum2即可得到答案。这种发法实现起来比上面两个算法更加容易,以下是源代码:

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int sum1=0,sum2=0;
        for(int i=1;i<=nums.size();i++) sum1+=i;
        for(int i=0;i<nums.size();i++) sum2+=nums[i];
        return sum1-sum2;
    }
};
在我写这篇博客的时候我想到了算sum1时可以直接用公式,可以节约运行时间
class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int sum1=0,sum2=0;
        sum1=(1+nums.size())*nums.size()/2;
        for(int i=0;i<nums.size();i++) sum2+=nums[i];
        return sum1-sum2;
    }
};
这道题目虽然在OJ上通过了,但是也可能存在一个问题,就是求和时可能会出现越界的情况,如果n的值比较大,这个算法就不适应了。

  • 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、付费专栏及课程。

余额充值