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

原创 2015年07月10日 21:26:03


bool FindNumbersWithSum(int data[], int length, int sum, int* num1, int* num2)
{
bool found = false;
if (length < 1 || num1 == NULL || num2 == NULL)
return found;
int ahead = length - 1;
int behind = 0;
while (ahead > behind)
{
long 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;
}

时间复杂度为O(n).



void FindContinuousSequence(int sum)
{
if (sum < 3)
return;
int small = 1;
int big = 2;
int middle = (1 + sum) / 2;
int curSum = small + big;
while (sum<middle)
{
if (curSum == sum)
PrintContinuousSequence(small, big);
while (curSum > sum&&small < middle)
{
curSum -= small;
small++;
if (curSum == sum)
PrintContinuousSequence(small, big);
}
big++;
curSum += big;
}
}
void PrintContinuousSequence(int small,int big)
{
for (int i = small; i <= big; ++i)
printf("%d",i);
printf("\n");
}

剑指offer----和为S的连续正数序列----java实现

输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15;所以打印出三个连续序列1~5,4~6,7~8; 思路: 从递增数组...
  • snow_7
  • snow_7
  • 2016年08月15日 12:48
  • 691

和为S的连续正数序列

题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就...
  • yabg_zhi_xiang
  • yabg_zhi_xiang
  • 2016年05月25日 12:00
  • 961

和为S的两个数字 & 和为S的连续正数序列

和为S的两个数字 和为S的连续正数序列
  • Wendy0719
  • Wendy0719
  • 2017年06月14日 18:21
  • 159

和为S的连续正数序列

何海涛:《剑指Offer:名企面试官精讲典型编程题》:九度OJ 题目描述:http://ac.jobdu.com/problem.php?cid=1039&pid=24 小明很喜欢数学,有一天...
  • shanshanpt
  • shanshanpt
  • 2013年03月19日 08:24
  • 2482

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

输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 import java.util.ArrayList; /** ...
  • pomay
  • pomay
  • 2017年08月02日 16:00
  • 148

面试题41:和为s的两个数字VS和为s的连续正数序列

/*题目1:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于 s,输出任意一对即可。 题目2:输入一个正数,打印出所有和为s的连续正数序列(至少...
  • hxysea
  • hxysea
  • 2013年10月22日 11:48
  • 433

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

public class Q41和为s的两个数字VS和为s的连续正数序列 {    /**     * 题目:和为s的两个数字VS和为s的连续正数序列     * 题目说明:输入一个递增排序的数组...
  • qq_30507287
  • qq_30507287
  • 2016年08月15日 09:49
  • 222

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

题目一: 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。第一直觉是想到O(n2)的方法,也就是先固定一个数字,然后再判断数...
  • qq_22329521
  • qq_22329521
  • 2016年12月07日 19:15
  • 274

面试题41:和为s的两个数字VS和为s的连续正数序列

题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述,对应每个测试案例,输出两个数,小的先输出。 代码如下:...
  • hyp1977
  • hyp1977
  • 2016年07月18日 16:58
  • 108

面试题45:和为s的两个数字VS和为s的连续正数序列

题目一: 输入一个递增排序的数组和一个数字s,在数组中查找两个数,是的它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。 思路: 由于数组已经排好序,可以从数组的头尾各取一个数字。 ...
  • tianya_team
  • tianya_team
  • 2016年01月13日 14:20
  • 228
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:41.和为s的两个数字VS和为s的连续正数序列
举报原因:
原因补充:

(最多只允许输入30个字)