《剑指offer》面试题57 - II. 和为s的连续正数序列
2024-09-08 12:10:27
问题描述
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
示例 1:
输入:target = 9
输出:[[2,3,4],[4,5]]
示例 2:
输入:target = 15
输出:[[1,2,3,4,5],[4,5,6],[7,8]]
限制:
1 <= target <= 10^5
代码
- 如果\(target\)要分解为两个连续的正数和,因为这两个数只相差\(1\),则\((target - 1)\%2==0\),并且正数的第一个元素是\((target-1)/2\).
- 如果\(target\)要分解为三个连续的正数和,因为这三个数相差\(1,2\),则\((target - 1 - 2)\%3==0\),并且正数的第一个元素是\((target-1-2)/3\)
- \(\dots\)
class Solution {
public:
vector<vector<int>> findContinuousSequence(int target) {
vector<vector<int>> ans;
int i = 1,j;
while(target > 0)
{
target -= i;
if(target > 0&& (target) % (i+1) == 0)
{
vector<int> tmp;
for(j = 0; j <= i; ++j)
tmp.push_back((target)/(i+1)+j);
ans.push_back(tmp);
}
++i;
}
reverse(ans.begin(),ans.end());
return ans;
}
};
结果:
执行用时 :4 ms, 在所有 C++ 提交中击败了84.28%的用户
内存消耗 :6.9 MB, 在所有 C++ 提交中击败了100.00%的用户
最新文章
- css_随笔
- nyoj 448 寻找最大数(贪心专题)
- html-制作导航菜单
- php练习3——猜拳游戏,评委打分问题
- mysql批量删除指定前缀或后缀表
- UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)
- 128M小内存VPS优化与typecho环境搭建
- jquery toggle 替换的实现
- shell实例练习+详解
- text-size-adjust: none并没有什么用
- SegNet 理解与文章结构
- react props与render成员函数
- Multiple Server Query Execution报The result set could not be merged..
- 【ELK】之Kibana使用
- JS实现双击内容变为可编辑状态
- jq 复习帖子 常用操作
- 解决VMware虚拟机的CentOS无法上网
- jstl $前 出现 空格 ,可能出现无法解析的 情况
- codeforces15E Triangles
- gen_empty_obj算子的作用
热门文章
- AtCoder Beginner Contest 169 题解
- 启动jetty命令
- 使用xlsx实现Excel导入
- Mac下好用的“visio”之 OmniGraffle Pro
- nim_duilib(1)之第一个dui executable(including configure setting in vs2017)
- Visiual Studio之c++项目瘦身(删除中间项)
- java源码——计算大于一个数的最小素数
- 【LeetCode】293. Flip Game 解题报告(C++)
- 【LeetCode】1180. Count Substrings with Only One Distinct Letter 解题报告(C++)
- 【LeetCode】563. Binary Tree Tilt 解题报告(Java & Python)