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-面试题41-和为s 的两个数字vs 和为s 的连续正数序列

题目描述:输入一个递增排序的数组和一个数字s,在数组中查找两个数,得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。例如输入数组{1 、2 、4、7 、11 、15 }和数字15. 由于...

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

和为s的两个数字: package case41_1TwoNumbersWithSum; /** * 题目1:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有...

剑指offer之面试题41和为s的两个数字VS和为s的连续正数序列

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

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

题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多个数字的和等于s,输出任意一对即可。 例如输入数组{1,2,4,7,11,15}和数字15.由于4+11...

剑指Offer 41题 和为s的两个数字VS 何为S的连续正数序列 Java版

package test; public class FindNumbersWithSum { public boolean findNumbersWithSum(int[] data, in...

剑指offer--面试题41:和为S的两个数字 vs 和为S的连续正数序列

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

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

// 题目1:输入一个递增排序的数组和一个sum值,输出数组中两个数和等于sum public class Main { public static void main(String[] args...

41-所有和为s的连续正数序列/递增数列中和为s的两个数字

这里用到一个等差数列公式:      Sum=(small+big)n/2; vector > FindContinuousSequence(int sum) { vector v; vec...

剑指Offer面试题41和为s的两个数字与和为s的连续正数序列,面试题42翻转单词顺序与左旋转字符串

面试题41:和为s的两个数字,和为s的连续正数序列问题1:输入一个递增排序的数组和一个数字s.在数组中查找两个数使他们的和为s,如果有多对数字的和等于s,输出任意一对即可。 思路:固定一个数字然后遍...

剑指Offer面试题41:求和为s的两个数字;求和为s的连续正数序列 Java实现

题目一:输入一个递增排序的数组和一个数字s,在数组中找两个数,使得他们的和刚好是s.如果有多对数字的和等于s,则输出任意一对即可。例如,输入数组{1,2,4,7,11,15}和数字15,则输出4和11...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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