首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么只有当输入为5时才会出现运行时错误?

为什么只有当输入为5时才会出现运行时错误?
EN

Stack Overflow用户
提问于 2016-04-28 13:09:30
回答 1查看 100关注 0票数 0

这是338题里的代码,数比特,我想我已经写完了。但是当输入为5时,这些代码会出现运行时错误吗?但是为什么呢?

问题是:给定一个非负整数数num。对于范围为0的每一个数字,≤i,≤,num,计算其二进制表示中的1的个数,并将它们作为数组返回。

代码语言:javascript
复制
class Solution {
public:
    vector<int> countBits(int num) {
        vector<int> binaryone(num+1);
        binaryone[0]=0;
        if(0==num)
            return binaryone;
        binaryone[1]=1;
        if(1==num)
            return binaryone;
        int w = 1 ;
        int i = 2;
        while(i<=num+1)
        {
            if(i<(pow(2,w-1)+pow(2,w-2)))
            {
                binaryone[i]=binaryone[i-pow(2,w-2)];
            }
            else
            {
                if(i<=(pow(2,w)-1))
                {
                    binaryone[i]=binaryone[i-pow(2,w-2)]+1;
                }
                else
                {
                    if(i==pow(2,w))
                        {
                            w++;
                            binaryone[i]=binaryone[i-pow(2,w-2)];
                        }
                }
            }
            i++;
        }
        return binaryone;
    }
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-28 13:23:23

我不认为这只会有5,但对你的所有投入。这是因为您通过以下方法在num+1向量中创建了binaryone元素:

vector<int> binaryone(num+1);

您的循环while(i<=num+1)正在索引一个在零基础索引结束后的元素,给您一个运行时错误。如果您有n元素,则索引范围将来自0 to n-1

因此,将循环条件更改为:while(i<num+1)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36915687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档