和为S的整数序列

该博客介绍了如何找到所有和为给定正整数target的连续正整数序列。通过示例展示了当target分别为9和15时的输出结果,并提供了解题思路,采用暴力求解方法,通过两层循环找出满足条件的序列。
摘要由CSDN通过智能技术生成

【题目:】 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
【示例1:】

输入:target = 9
输出:[[2,3,4],[4,5]]

【示例2:】

输入:target = 15
输出:[[1,2,3,4,5],[4,5,6],[7,8]]

【解题思路:】 暴力法

  1. 从题目我们可以看到,需要二维数组来存储结果,所以我们先定义一个二维数组。每次把满足条件的结果放入一维数组中,再放入二维数组中。
  2. 两层循环,从i=1,i<=(target+1)/2开始,j=i,j<=(target+1)/2进行累加计算,把数据放入一维数组中,如果大于则跳出,清空一维数组,如果等于则压入二维数组中。
  3. 返回二维数组。
    图解说明:
    在这里插入图片描述
    根据上述思想,我们写出代码:
    代码:
vector<vector<int>> findContinuousSequence(int target) 
{
 vector<vector<int>> result;
 vector<int> temp;
 
 for(int i=1;i<=((target+1)/2);i++)
 {
  int sum=0;
  for(int j=i;j<=(target+1)/2;j++)
  {
   sum+=j;
   temp.push_back(j);//压入数组
   if(sum>target)
   {
    temp.clear();
    break;
   }
   else if(sum==target)
   {
    result.push_back(temp);//一维数组压入二维数组中
    break;
   }
  }
 }
 return result;
 }

暴力法比较无脑一点,加油!💪。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值