在给定数组中查找两个数的和为给定值sum
2010-08-12 11:04
197 查看
/** * 传入一个数组和一个sum值,查找在该数组中是否存在两个数的和为sum * * @author huoqi * @date 2010-08-12 */ public class FindSum { public static void main(String[] args) { int[] arr = { 52, 59, 69, 41, 2, 3740286, 38, 74, 21, 88, 23, 44, 434, 525, 66, 75463, 454354, 43243, 54534, 32446, 765765, 756756, 56345, 65465, 345435, 34, 567, 6, 75, 773, 3740 }; // 先对数组进行排序 arr = quickSort(arr, 0, arr.length - 1); // 然后两边夹逼,进行查找 String findRet = find(arr, 82); if (findRet == null) { System.out.println("not found"); } else { System.out.println(findRet); } } /** * 传入一个数组和一个sum值,查找在该数组中是否存在两个数的和为sum * * @param arr 待查找数组 * @param sum 待查找的和 * @return 返回字符串形式,为相加的两个数,如果没有找到,返回null */ public static String find(int[] arr, long sum) { int start = 0; int end = arr.length - 1; int tempSum = 0; while (true) { tempSum = arr[start] + arr[end]; if (arr[start] + arr[end] == sum) { return String.valueOf(arr[start] + " + " + arr[end]); } else { if (end - start == 1) { return null; } else { if (tempSum > sum) { end--; } else if (tempSum < sum) { start++; } } } } } /** * 快速排序算法 * * @param arr 待排序数组 * @param startIndex 起始下标 * @param endIndex 结束下标 * @return 排序好的数组 */ public static int[] quickSort(int[] arr, int start, int end) { } }
相关文章推荐
- (leetcode)1. 查找数组中两个数之和为给定值Two Sum---Java
- 程序员面试题100题第10题——在排序数组中查找和为给定值的两个数
- 查找有序数组中等于给定值的两个数
- 【100题】在排序数组中查找和为给定值的两个数
- 【算法10】在升序数组中查找和等于给定值的两个数
- 查找数组中和为某给定值的两个数
- 【练习】输入一个已经按升序排序过的数组和一个数字sum,在数组中查找两个数,使得它们 的和正好是输入的那个数字sum,要求时间复杂度为O(n)
- 输入一个递增排序的数组和一个数字sum,在数组中查找两个数,使得他们的和正好是sum
- 在一个排好序的数组中查找和为sum的两个数
- 167 Two Sum II (给定数组求相加为定值的两个数)
- 在升序数组中查找和等于给定值的两个数
- 给定一个数组,从中查找是否存在两个数的和等于一个给定的x
- Search Insert Position 查找给定元素在数组中的位置,若没有则返回应该在的位置
- 根据给定的某个Sum,从数组中找出3个和为该Sum(三个数的和)
- 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 给定一个数组,问其中是否有两个数的和为10?
- 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 在排序数组中查找和为给定值的两个数字
- 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 在排序数组中查找和为给定值的两个数字