/**
* 求数组两个数的和等于给定的数
* 先排序数组.
* Created by lezg on 16/4/5.
*/
public class Solution {
public int[] twoSum(int[] nums, int target) {
int len = nums.length;
int[] nums_sorted = new int[len];
System.arraycopy(nums, 0, nums_sorted, 0, len);
Arrays.sort(nums_sorted);
int start = 0;
int end = len - 1;
while (start < end) {
//大于target,左边往前移一位
while (nums_sorted[start] + nums_sorted[end] > target) {
--end;
}
if (nums_sorted[start] + nums_sorted[end] == target) {
break;
}
//小于target,右边往后移一位
while (nums_sorted[start] + nums_sorted[end] < target) {
++start;
}
if (nums_sorted[start] + nums_sorted[end] == target) {
break;
}
}
int[] res = new int[2];
int index = 0;
int x = nums_sorted[start];
int y = nums_sorted[end];
for (int i = 0; i < len; i++) {
if (nums[i] == x || nums[i] == y) {
res[index++] = i;
}
}
return res;
}
}
LeetCode Two Sum
最新推荐文章于 2024-03-02 21:28:00 发布