牛客题霸 — 缺失数字

缺失数字

https://www.nowcoder.com/practice/9ce534c8132b4e189fd3130519420cde?tpId=188&&tqId=36549&rp=1&ru=/ta/job-code-high-week&qru=/ta/job-code-high-week/question-ranking

方法:求和公式
时间复杂度:图片说明
思路:因为 0-n 个数里面只缺少一个数,所以可以直接对 0-n 求和,然后再减去a 数组的和就是答案了。
代码:

class Solution {
public:
    /**
     * 找缺失数字
     * @param a int整型一维数组 给定的数字串
     * @param aLen int a数组长度
     * @return int整型
     */
    int solve(vector<int>& a) {
        int aLen=a.size();
        int presum = aLen * (aLen + 1) / 2;
        int sum = 0;
        for (int i=0;i<aLen;i++)
            sum += a[i];
        return presum - sum; 
    }
};
全部评论
为什么这么多赞呢?都要遍历求和了,那跟遍历比较a[i]!=i不是一回事么。
2 回复 分享
发布于 2021-07-03 17:13
数组很大的时候,其他语言会溢出的吧
1 回复 分享
发布于 2021-03-15 22:37
思路不错,但是和跟a[i]!=i判断的方式,时间复杂度应该差不多,没有实质的提升。数据大的时候,也会有溢出的风险
1 回复 分享
发布于 2021-04-13 10:21
遍历比较a[i]!=i之前得排序 O(nlogn + n) 求和只需要遍历一遍数组O(n)
1 回复 分享
发布于 2021-07-22 16:43
今天的面试到此结束
点赞 回复 分享
发布于 2021-09-27 19:24

相关推荐

牛客279957775号:铁暗恋
点赞 评论 收藏
分享
joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
评论
37
2
分享
牛客网
牛客企业服务