Solution 14: Two Sum

问题描述

输入一个升序排列的数组和一个数字。在数组中查找两个数,使得两个数之和等于指定的数。

如果存在多对,只需要输出其中一对即可。

解决思路

类似于快排中的partition函数。时间复杂度为O(n)。

程序

public class TwoSum {
	public List<Integer> getTwoNumOfSum(int[] nums, int sum) {
		List<Integer> res = new ArrayList<Integer>();
		if (nums == null || nums.length == 0) {
			return res;
		}

		int low = 0, high = nums.length - 1;
		while (low < high) {
			int cur = nums[low] + nums[high];
			if (cur == sum) {
				res.add(nums[low]);
				res.add(nums[high]);
				break;
			}
			if (cur < sum) {
				++low;
			} else {
				--high;
			}
		}

		return res;
	}
}
原文地址:https://www.cnblogs.com/harrygogo/p/4617700.html