查找数组中两个数,它们的和与数组中某个数字相等
2011-08-27 22:52
232 查看
怀念对算法的酷爱,决定搜集网上的算法题目,并持之以恒练习之
/* 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。 如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1,5,4,7,18,25,37,44 和数字25。由于7+18=25,因此输出7 和18。 */ class Program { static void Main(string[] args) { int x, y; int[] items = { 1,5,4,7,18,25,37,44 }; FindTwoNumbers(items, 25, out x, out y); Console.WriteLine("第一个数字是:{0}", x); Console.WriteLine("第二个数字是:{0}", y); /* * * 输出结果 * * * 第一个数字是:7 第二个数字是:18 * */ } static void FindTwoNumbers(int[] items,int sum, out int x, out int y) { x = -1; y = -1; int start = 0; int end = items.Length - 1; //利用while循环,控制时间复杂度为0(n) while (end > start) { int sortSum = items[start] + items[end]; if (sum == sortSum) { x = items[start]; y = items[end]; break; } else if (sum > sortSum) { start++; } else { end--; } } } }
相关文章推荐
- 输一个递增排序的数组和一个数字 s,在数组中查找两个数使得它们的 和正好是 s
- 【算法】输入一个已经按升序排过的数组和数字,在数组中查找两个数字,使得它们的和正好是输入那个数字。
- 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数使得它们的和正好是输入的那个数字
- 微软面试14题 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 程序员面试题精选100题(10)-在排序数组中查找和为给定值的两个数字
- 在数组中查找和为给定值的两个数字(排序数组和不排序数组)
- 输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字 时间复杂度O(NlogN) 空间复杂度O(1)
- 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 在排序数组中查找和为给定值的两个数字
- 数据结构——算法之(005)(输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字)
- 在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 14 在数组中查找两个数,使得它们的和正好是输入的那个数字
- 第14 题: 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 【编程题目】输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 在排序数组中查找和为给定值的两个数字
- 程序员面试题精选100题(10)-在排序数组中查找和为给定值的两个数字
- 在排序数组中查找和为给定值的两个数字--总结
- 在数组中查找两个数,使得它们的和正好是输入的那个数字
- 输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。 时间复杂度O(N) 空间复杂度O(N)