剑指offer——和为s的两个数字VS和为s的连续正数序列
两种方法都类似于快排的变形。
#include <iostream>
#include <string>
using namespace std; bool FindNumbersWithSum(int data[],int length,int sum,int *num1,int *num2)
{
bool found=false;
if (length<||num1==NULL||num2==NULL)
{
return found;
}
int ahead=length-;
int behind=;
while(ahead>behind)
{
long curSum=data[ahead]+data[behind];
if (curSum==sum)
{
*num1=data[behind];
*num2=data[ahead];
found=true;
break;
}
else if(curSum>sum)
{
ahead--;
}
else
{
behind++;
}
}
return found;
} void PrintContinuousSequence(int small,int big)
{
for (int i=small;i<=big;i++)
{
cout<<i<<" ";
}
cout<<endl;
} void FindContinuousSequence(int sum)
{
if (sum<)
{
return;
}
int small=;
int big=;
int middle=(+sum)/;
int curSum=small+big;
while(small<middle)
{
if (curSum==sum)
{
PrintContinuousSequence(small,big);
}
while(curSum>sum&&small<middle)
{
curSum-=small;
small++;
if (curSum==sum)
{
PrintContinuousSequence(small,big);
}
}
big++;
curSum+=big;
}
} int main()
{
int str[]={,,,,,,,,,};
int m,n;
FindNumbersWithSum(str,,,&m,&n);
cout<<m<<n<<endl;
FindContinuousSequence();
return ;
}
剑指offer——和为s的两个数字VS和为s的连续正数序列的更多相关文章
- [剑指Offer]41.和为S的两个数字 VS 和为S的连续正数序列
[剑指Offer]41 和为S的两个数字 VS 和为S的连续正数序列 Leetcode T1 Two Sum Given an array of integers, return indices of ...
- 【面试题041】和为s的两个数字VS和为s的连续正数序列
[面试题041]和为s的两个数字VS和为s的连续正数序列 题目一: 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. ...
- 【剑指offer】面试题41:和为 s 的两个数字 VS 和为 s 的连续正数序列
题目: 输出所有和为S的连续正数序列.序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 思路: small代表序列最小数字,large代表序列最大数字.初始化small为1,large为2. ...
- 和为S的两个数字VS和为s的连续正数序列
题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. 例如输入数组1.2.4.7.11.15和数字15.由于4+11=15, ...
- 和为 s 的两个数字(和为 s 的连续正数序列)
题目 输入一个递增排序的数组和一个数字 s,在数组中查找两个数,得它们的和正好是 s.如果有多对数字的和等于 s,输出任意一对即可 思路 我们先在数组中选择两个数字,如果它们的和等于输入的 s,我们就 ...
- 面试题41:和为s的两个数字VS和为s的连续正数序列
题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和为s,输出任意一对即可. vector<int> findNumberwWithSu ...
- 剑指Offer 和为S的两个数字
题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 思路 ...
- 剑指 Offer——和为 S 的两个数字
1. 题目 2. 解答 由于数组是已经排好序的,我们可以定义两个指针,第一个指针指向第一个元素,第二个指针指向最后一个元素,然后求出这两个元素的和,与目标和进行比较.若小于目标和,第一个指针向前移动: ...
- 剑指Offer——和为S的两个数字
题目描述: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输入描述: 对应每个测试案例,输出两个数,小的先输出. ...
随机推荐
- Eclipse更改默认工作环境编码为UTF-8(9.6)
1 window---->preference------>General----->Workspace---->Text file encoding---->Other ...
- 关于.cap文件分析
CAP文件是比较通用的一种文件格式,基本上大多数抓包软件都支持以此格式将捕获的网络数据包存储下来. 需要说明的是,CAP文件存储下来的,一般都是网络数据帧.不同网络传输协议下的帧格式是有差异的, ...
- 红米手机连接logcat,调试信息刷屏解决办法
我买了红米,平时拿它来当作安卓测试机的 可是把它接入eclipse里面,发现它会往logcat打印大量的日志,我自己想调试一个程序的时候,自己的程序的日志一会儿就被冲刷没了 新建一个logcat me ...
- Linux下vim命令总结
一.光标控制命令 命令 移动 k 向上移一行 j 向下移一行 h ...
- vmstat 命令
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深 ...
- java多线程实现复制大文件
有些开发的时候我们经常遇到这样一个问题,对大文件的处理.比如:日志文件.那么十几G的大文件.我们应该如何复制呢? 还有就是希望从本地和远程复制文件,文件都很大,10G级的如何办呢? 在这里我告诉你们, ...
- 安装android Studio和运行react native项目(基础篇)
ANDROID_HOME环境变量 确保ANDROID_HOME环境变量正确地指向了你安装的Android SDK的路径. 打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设 ...
- Jmeter监控Linux服务器性能
①.下载JMeterPlugins相关的jar包,放jmeter的安装路径\lib\ext下——这个时候启动jmeter会发现,添加监听器时,出现了一堆的jp@jc……,这些就是插件的功劳. JMet ...
- lua元表(简单例子)
Set = {} Set.mt = {}--定义普通的表作为元表,为了避免命名污染直接放在Set内部 function Set.new(t) local set = {} setmetatable(s ...
- linux下jdk多版本管理
linux下jdk多版本管理 项目开发中,不管是哪种语言都避免不了多个版本环境管理问题(本文虽然以jdk为例来写的,但不仅限于jdk),如何能做到快速的环境升级与切换确实是一件深思的事! 安装jdk ...