简单快速题解

和为S的连续正数序列_牛客网

https://www.nowcoder.com/practice/c451a3fd84b64cb19485dad758a55ebe?tpId=13&tqId=11194&tPage=3&rp=2&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking

小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

C++两端移动法求解

初始头p=1,求出尾e使得区间内的值刚好不大于sum,二次求根公式完事了。此时总和就是total。
循环条件 p<e(至少两个数
如果total比sum大,减去头部;total比sum小,加上尾部,注意(P++)、(++E)
当total=sum时,把p e区间的数push进tmp,再整体push进tp。
完事。


class Solution {
public:
    vector<vector> FindContinuousSequence(int sum) {  vector<vector>tp;
        if(sum<1) return tp;
        int p=1,e=(int)(sqrt(1+8sum)-1)/2;
        int total=(1+e)e/2;
        while(p<e){
            if(total>sum) total-=(p++);
            else if(total<sum) total+=(++e);
            else{
                vectortmp;
                for(int t=p;t<=e;t++) tmp.push_back(t);
                    tp.push_back(tmp);
                    total-=(p++);
                    total+=(++e);
                }
        }
    return tp; } };


vector ['vektə] 详细X
基本翻译
n. 矢量;带菌者;航线
vt. 用无线电导航
网络释义
vector: 载体
vector graphics: 矢量图形
row vector: 行向量
全部评论

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
评论
1
1
分享
牛客网
牛客企业服务