leetcode57:和为S的正数连续序列

leetcode打卡,没什么技巧,执行太耗时了。。。

vector<vector<int>> findContinuousSequence(int target)
{
    vector<vector<int>> result;
    int sum = 0;
    int result_index = 0;
    int start_index = 0;
    for(int i = 0 ; i < target; i ++)
    {
        //每次进来i+1,加到sum里
        sum += (i+1);   //i是数组的索引,要加的数是从1开始,所以i+1才是要加的数
        //如果sum等于target,且当前的索引与起始索引差距大于1(即至少两个数),匹配成功
        if(sum == target && (i - start_index >= 1))
        {
            result.push_back(vector<int>());
            //cong start_index开始,循环至当前索引i,把值传到result数组
            for(int j=start_index; j < (i+1); j++) {
                result[result_index].push_back(j + 1);
            }
            //循环完之后,result索引值增加
            result_index++;
            //start_index的索引值也增加,为什么++而不是直接等于当前索引i,因为要考虑叠加的过程
            start_index ++;
            //同时和重新置0
            sum = 0;
            //
            i = start_index - 1;
        }
        //如果是和大于target,匹配不上
        else if(sum > target)
        {
            //起始索引增加
            start_index ++;
            //和置0,重新算
            sum = 0;
            //当前索引值变成start_index - 1,等等执行完会i++,位置是与start_index一样
            i = start_index-1;
        }
    }
    return result;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值