和为s的两个数字VS和为s的连续正数序列

1. 和为s的两个数字;

1)思路:

假设数组升序排列:
定义两个指针min 和max;
如果这两个指针指向的数字等于sum,则找到;
如果和小于sum,则将min向右移;
如果和大于sum,则将max向左移。

2)代码:

#include <iostream>
#include<vector>
using namespace std;vector<int> FindNumbersWithSum(vector<int> array,int sum)
{vector<int> res;res.clear();int length=array.size();int Min=0, Max=length-1;while(Min<Max){if((array[Min]+array[Max])==sum){res.push_back(array[Min]);res.push_back(array[Max]);break;}else if ((array[Min]+array[Max])<sum)Min++;elseMax--;}return res;
}
int main()
{vector<int> array={1,2,4,7,11,15};vector<int>res=FindNumbersWithSum( array, 15);
cout<<res[0]<<","<<res[1]<<endl;return 0;
}

运行结果:

4,11Process returned 0 (0x0)   execution time : 0.080 s
Press any key to continue.

2. 和为s的连续正数序列

参考《剑指offer》的解题思路:

C++代码:

#include <iostream>
#include<vector>
using namespace std;
vector<int> StoreContinuousSequence(int small,int big);void Print2Dvec(vector<vector<int>> vec)
{vector<int> curvec;for(int i=0;i<=vec.size()-1;i++){curvec.clear();curvec=vec[i];for(int j=0;j<=curvec.size()-1;j++)cout<<curvec[j]<<" ";cout<<endl;}return;
}vector<vector<int> > FindContinuousSequence(int sum)
{vector<vector<int>> answer;answer.clear();int small=1, big=2;int middle=(1+sum)/2;int curSum=small+big;while(small<middle){if(curSum==sum)answer.push_back(StoreContinuousSequence(small,big));while(curSum>sum&&small<middle){curSum-=small;small++;if(curSum==sum)answer.push_back(StoreContinuousSequence(small,big));}big++;curSum+=big;}return answer;
}
vector<int> StoreContinuousSequence(int small,int big)
{vector<int>res;res.clear();for(int i=small; i<=big;i++)res.push_back(i);return res;
}
int main()
{vector<vector<int> >vec= FindContinuousSequence(9);Print2Dvec(vec);return 0;
}

运行结果:

2 3 4
4 5Process returned 0 (0x0)   execution time : 0.313 s
Press any key to continue.

《剑指offer》面试题41/42——和为s的两个数字VS和为s的连续正数序列(C++代码实现)相关推荐

  1. [剑指offer]面试题41:和为s的两个数字VS和为s的连续正数序列

    面试题41:和为s的两个数字VS和为s的连续正数序列 题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. 代码如下: b ...

  2. 剑指offer——面试题41-2:和为S的两个数字

    剑指offer--面试题41-2:和为S的两个数字 Solution1: 算法:双指针的经典用法 class Solution { public:vector<int> FindNumbe ...

  3. 剑指offer——面试题41:和为S的连续整数序列

    剑指offer--面试题41:和为S的连续整数序列 Solution1:我的答案 基本思路是根据等差数列的前n项和推导出首项与项数的关系,设首项为a1a1a_1,项数为kkk,和为S" ro ...

  4. 剑指offer——面试题29:数组中出现次数超过一半的数字

    剑指offer--面试题29:数组中出现次数超过一半的数字 Solution1: 20180902日整理 注意几点: 1.若下一个数字和我们之前保存的数字相同,则次数 +1 2.若下一个数字和我们之前 ...

  5. 剑指offer面试题[40]-数组中只出现一次的数字

    题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 注意原题目要求空间复杂度为0(1). 位运算的具体思路可以参看剑指offer. class So ...

  6. 剑指offer | 面试题53 - II. 0~n-1中缺失的数字

    转载本文章请标明作者和出处 本文出自<Darwin的程序空间> 本文题目和部分解题思路来源自<剑指offer>第二版 开始行动,你已经成功一半了,献给正在奋斗的我们 题目 一个 ...

  7. [剑指offer]面试题第[42]题[Leedcode][JAVA][第53题][最大子序和][动态规划][贪心][分治]

    [问题描述][第53题][最大子序和][中等] 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和.示例:输入: [-2,1,-3,4,-1,2,1, ...

  8. 剑指offer面试题[41]-和为s的两个数VS和为s的连续正数序列

    题目描述 题目1: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输 ...

  9. 剑指offer面试题41. 数据流中的中位数(二分查找)

    题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. 例 ...

  10. [剑指offer]面试题第[53-2]题[JAVA][0-n-1中缺失的数字][二分法][暴力法]

    [问题描述][简单] 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字.示例 1:输 ...

最新文章

  1. 在自行车论坛看到的有趣帖子
  2. java 自动装箱自动拆箱_自动装箱和自动拆箱
  3. Audio: 如果你愿意一层一层剥开我的心
  4. python的flask实现第三方登录怎么写_关于qq和新浪微博的第三方登陆|python|flask
  5. python基础list_python基础操作---list
  6. Codeforces Round #281 (Div. 2) A. Vasya and Football 模拟
  7. pyinstaller 打包后报错 ModuleNotFoundError: No module named ‘***‘ 最简单解决方案
  8. div和span标签(HTML)
  9. webapp之路--之query media
  10. 科学计算机度转弧度,角度弧度换算器在线(70°角度转换弧度)
  11. 如何写好PRD文档?
  12. IDEA使用教程汇总
  13. 匹配滤波器的仿真——线性调频信号
  14. 超全树叶 叶子免抠元素素材网站整理
  15. 【STM8L】STM8L之按键中断
  16. 智慧消防之物联网消防的意义
  17. 关于电商库存扣减的解决方案
  18. Android Q (Android 10.0)
  19. 十个最好的免费网络硬盘
  20. 苹果手机iphone丢失被诈骗经历,警醒更多的人

热门文章

  1. Hyperledger Fabric 网络搭建详解
  2. lgg8各个版本_LG正式推出G8SThinQ 搭载骁龙855
  3. (day 52 - DFS) 剑指 Offer 68 - II. 二叉树的最近公共祖先
  4. Java进阶:SpringMVC数据请求全局过滤器
  5. eclipse java 报错信息_解决Eclipse启动时报Initializing Java Tooling异常信息
  6. 基于guava的重试组件Guava-Retryer
  7. Java RMI(远程方法调用)入门
  8. SLAM_局部束调整(local Bundle Adjustment, BA)步骤与代码示例
  9. 机器学习and深度学习学习资料
  10. Arduino 例程编译错误 error: unknown type name uint_farptr_t did you mean uint_fast8_t