题目一:和为S的两个数字

输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

输出描述:

对应每个测试案例,输出两个数,小的先输出。

测试序列

1)功能测试(数组中存在和为s的两个数;数组中不存在和为s的两个数)

2)特殊输入测试(数组指针为空指针)

解题思路:

使用两个指针分别指向首尾,然后根据和不断向中间逼近,遇到的第一个满足条件的两个数,就是乘积最小的(原理同 正方形、矩阵周长相同,正方向面积大 可知,4*4>2*6)。

class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
int size = array.size();
vector<int> res;
if(size<2)
return res; int front = 0, back = size-1; while(back>front){
int s = array[back]+array[front];
if(s==sum){
res.push_back(array[front]);
res.push_back(array[back]);
break;
}else if(s<sum){
front++;
}else{
back--;
}
} return res; //没有找到,直接返回空的res }
};

  

题目二:和为S的连续正数序列

小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

输出描述:

输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

测试序列

1)功能测试(存在和为s的连续序列;不存在和为s的连续序列)

2)边界值测试(连续序列的最小和3)

解题思路:

仍然使用双指针,记录序列的首尾(最大值与最小值)

如果从front到back序列和大于sum,则可以从序列中去掉较小的值,即增大front的值

如果从front到back序列和小于sum,则可以增大back的值,让序列包含更多的数

因为序列中至少有两个数字,因此一直增加front到(1+sum)/2为止

class Solution {
public:
vector<vector<int> > FindContinuousSequence(int sum) {
vector<vector<int> > res;
if(sum<3) //两个正数的和至少是3
return res; int front = 1, back=2; //不能初始化为 0/1
int mid = (1+sum)/2;
//while(front<back && back<sum){
while(front<mid){
int s = getSeqSum(front, back);
if(s==sum){
vector<int> line;
for(int i=front;i<=back;i++){
line.push_back(i);
}
res.push_back(line);
front++; //重新找
}else if(s<sum){
back++;
}else{
front++; //并更新back
//不用更新back!!
//back--; //会造成front==back的情况,然后不满足while循环
//back=front+1; //有比较好的更新么
}
}
return res;
} int getSeqSum (int front, int back){
int ssum = (front+back)*(back-front+1)/2;
return ssum;
}
};

  

57 和为S的数字的更多相关文章

  1. 【剑指offer】面试题 57. 和为 S 的数字

    面试题 57. 和为 S 的两个数字 题目一:和为 S 的两个数字 题目 输入一个递增排序的数组和一个数字 S,在数组中查找两个数,是的他们的和正好是 S,如果有多对数字的和等于 S, 输出两个数的乘 ...

  2. JS实现input中输入数字,控制每四位加一个空格(银行卡号格式)

    前言 今天来讲讲js中实现input中输入数字,控制每四位加一个空格的方法!这个主要是应用于我们在填写表单的时候,填写银行卡信息,要求我们输入的数字是四位一个空格!今天主要介绍两种方式来实现这个方法! ...

  3. javascript学习笔记10----字符串的基本操作

    1.字符串的基本操作如下: 定义字符串: var str = "Hello World!" 字符串的基本操作如下: str.length-----返回字符串长度,这里返回12 st ...

  4. angularjs 时间格式化

    本地化日期格式化: ({{ today | date:'medium' }})Nov 19, 2015 3:57:48 PM ({{ today | date:'short' }})11/19/15 ...

  5. 268条PCB Layout设计规范

    1 PCB布线与布局 PCB布线与布局隔离准则:强弱电流隔离.大小电压隔离,高低频率隔离.输入输出隔离.数字模拟隔离.输en入输出隔离,分界标准为相差一个数量级.隔离方法包括:空间远离.地线隔开. 2 ...

  6. HTML及CSS学习笔记

    推荐博客:付铭 day-01 HTML 1.HTML 基本语法 html标签 单标签 <img /> .<img> 双标签 <html> </html> ...

  7. [C#.Net]KeyDown(KeyUp)和KeyPress的区别

    在keyDown事件里使用keyValue:在keyPress事件里使用keyChar. keyValue转换keyChar:(char)keyValue 验证只有数字和backSpace e.han ...

  8. js学习笔记10----字符串的基本操作

    1.字符串的基本操作如下: 定义字符串: var str = "Hello World!" 字符串的基本操作如下: str.length-----返回字符串长度,这里返回12 st ...

  9. 201621123010 《Java程序设计》第1周学习总结

    1. 本周学习总结 本周主要学习了五个知识点 Java是面向对象的语言 JDK,JRE,JVM的联系 javac及java指令 Java跨平台运行的原理 新概念:类,类是面向对象中的概念 2. 书面作 ...

随机推荐

  1. swift 2.0 语法 字典

    //: Playground - noun: a place where people can play import UIKit /*: 字典 * 和OC的区别 * 1. {} 替换为 [] * 2 ...

  2. IPV6相关RFC文档

    1. 通用 IPv6的通用RFC和Internet草案 RFC# 类 标题 1752 标准记录 对IP下一代协议的建议 1924 资料 IPv6地址的压缩表示法 2851 标准记录 Internet网 ...

  3. CSS经典布局之弹性布局

    当我们在浏览浏览器的时候,经常会放大/缩小浏览器的显示比例,或者在不同的设备上.所处的分辨率也不尽同样. 因此.我们须要学习一个新的知识:弹性盒模型. 弹性盒模型 实现项目对齐,方向,排序(即使项目大 ...

  4. iOS 中删除cookie的正确做法

    需求:删除 qq 登录的 cookie,保证下次打开 qq 登录页面不会默认登录 实现:      NSString *url =@"https://w.mail.qq.com/cgi-bi ...

  5. 第一章、Tiny4412 U-BOOT移植一 说明【转】

    本文转载自:http://blog.csdn.net/eshing/article/details/37520291 一.移植前说明: 1.  特别声明:此文档是我的学习文档,里面肯定有错误地方,仅供 ...

  6. js产生随机数教程

    <script>   function GetRandomNum(Min,Max){   var Range = Max - Min;   var Rand = Math.random() ...

  7. [Swift通天遁地]三、手势与图表-(4)3DTouch功能在项目中的应用

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. ACM_无聊者序列(斐波那契数列大数取余(同余)+规律)

    Problem Description: 瓜瓜在玩着由红色和蓝色的大理石做成的玻璃珠,他将n个玻璃珠从左到右排成一个序列叫做无聊者序列.一个非空的红色和蓝色玻璃珠组成的序列是一个无聊者序列.这个序列的 ...

  9. [ SDOI 2009 ] HH的项链 & [ HEOI 2012 ] 采花

    \(\\\) \(Description\) 给出一个长为\(N\)的序列,\(M\)次询问区间\([L_i,R_i]\)内不同数字的个数. \(N\in [1,5\times 10^4]\),\(M ...

  10. no斜体 背景图片坐标

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...