小小c#算法题 - 1 - 找出数组中满足条件的两个数
2012-04-03 23:32
441 查看
把一些东西放到网上,看的时候方便一些。代码可能有bug且不是最佳解决方案,仅供参考。
题目:输入一个按升序排序的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。
例如输入数组1、2、3、4、7、11、12、15和数字15。由于4+11=15,因此输出4和11。
这道题非常的简单,只是判断是否存在这么一对数。当然你也可能把所有符合条件的数对找出来并全部输出。下面的代码把符合条件的数对输出了,但没有考虑重复的情况,比如说有两个4, 两个11。那么只输出一对4+11=15.
基本思想:由于数组是有序的,所以从头尾开始,向中间靠拢寻找满足条件的数对。
代码如下(c#):
View Code
1 //直接求解,这里输出了所有可能的组合(重复的只输出了一次)
2 public static void IsExist(int[] myArray, int value)
3 {
4 int start = 0;
5 int end = myArray.Length - 1;
6 if (myArray[end] < value / 2)
7 {
8 Console.WriteLine("Such pairs don't exist.");
9 }
while (start < end)
{
if (myArray[start] + myArray[end] > value)
{
end--;
}
else
{
if (myArray[start] + myArray[end] < value)
{
start++;
}
else
{
Console.WriteLine("{0} + {1} = {2}", myArray[start++], myArray[end--], value);
//not consider the duplicated pairs
}
}
}
}
题目:输入一个按升序排序的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。
例如输入数组1、2、3、4、7、11、12、15和数字15。由于4+11=15,因此输出4和11。
这道题非常的简单,只是判断是否存在这么一对数。当然你也可能把所有符合条件的数对找出来并全部输出。下面的代码把符合条件的数对输出了,但没有考虑重复的情况,比如说有两个4, 两个11。那么只输出一对4+11=15.
基本思想:由于数组是有序的,所以从头尾开始,向中间靠拢寻找满足条件的数对。
代码如下(c#):
View Code
1 //直接求解,这里输出了所有可能的组合(重复的只输出了一次)
2 public static void IsExist(int[] myArray, int value)
3 {
4 int start = 0;
5 int end = myArray.Length - 1;
6 if (myArray[end] < value / 2)
7 {
8 Console.WriteLine("Such pairs don't exist.");
9 }
while (start < end)
{
if (myArray[start] + myArray[end] > value)
{
end--;
}
else
{
if (myArray[start] + myArray[end] < value)
{
start++;
}
else
{
Console.WriteLine("{0} + {1} = {2}", myArray[start++], myArray[end--], value);
//not consider the duplicated pairs
}
}
}
}
相关文章推荐
- 小小c#算法题 - 4 - 子数组最大和
- 【左神算法课】子数组最大差值小于某阈值,求满足条件的子数组个数
- 【算法世界】(八)找出数组中的两个数,使得二者之和为特定值target
- 面试算法题:数组中两个数之和为定值,找出这对数的下标
- S关于使用QL声明 找出同时满足多个tag拍摄条件设置算法
- 在给定数组中,找出最先满足两个数的和等于给定数,输出这两个元素的下标
- C# 找出泛型集合中的满足一定条件的元素 List<T>.Wher()
- 编程之美-快速找出满足条件的两个数-课后题
- C# 找出泛型集合中的满足一定条件的元素 List.Wher()
- leetcode-java.T001_TwoSum 给定一个整数数组,找出其中两个数满足相加等于你指定的目标数字
- @陈利人 : #面试题#给定两个数组X和Y,元素都是正数。请找出满足如下条件的数对的数目: x^y > y^x,即x的y次方>y的x次方;x来自X数组,y来自Y数组
- 找出数组中满足条件的所有组合!
- 一个整数数列,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1
- 算法-数组:找出符合某条件的最大矩形区域
- 设定二维整数数组B[0..m-1,0..n-1]的数据在行,列方向上都按从小到大的顺序排序,且整形变量x中的数据在B中存在。设计一个算法,找出一对满足B[i][j]=x的I,j值,要求比较次数不超过m
- 从一个数组中找出几个数,使其相加等于某个值的算法(数组元素可以重复)
- 快速寻找满足条件的两个数
- [算法学习]给定一个整型数组,找出两个整数为指定整数的和(3)
- 百度面试题找到满足条件的数组
- 整型数组处理算法(十)给定数组a[n],其中有超过一半的数为一个定值,找出这个数。[2014人人网笔试题]