题解 | #两数之和#
两数之和
http://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f
import java.util.*;
public class Solution {
/**
*
* @param numbers int整型一维数组
* @param target int整型
* @return int整型一维数组
private int val;
private int index;
public Pair(int val,int index){
this.val = val;
this.index = index;
}
}
public int[] twoSum (int[] numbers, int target) {
for(int i = 0;i<num.length;i++){
Pair pair = new Pair(numbers[i],i);
num[i] = pair;
public int compare(Pair x,Pair y){
return x.val-y.val;
}
while(i<j){
if(num[i].val + num[j].val == target){
if(num[i].index<num[j].index){
return new int[]{num[i].index+1,num[j].index+1};
}else{
return new int[]{num[j].index+1,num[i].index+1};
}
}else if(num[i].val + num[j].val < target){
i++;
}else{
j--;
}
}
return new int[]{0,0};
}
}
public class Solution {
/**
*
* @param numbers int整型一维数组
* @param target int整型
* @return int整型一维数组
*/
//定义一个实体类存放数值和该值的下标
class Pair{private int val;
private int index;
public Pair(int val,int index){
this.val = val;
this.index = index;
}
}
public int[] twoSum (int[] numbers, int target) {
// write code here
//定义一个pair对象数组
Pair[] num = new Pair[numbers.length];for(int i = 0;i<num.length;i++){
Pair pair = new Pair(numbers[i],i);
num[i] = pair;
}
//按照数值排序
Arrays.sort(num,new Comparator<Pair>(){public int compare(Pair x,Pair y){
return x.val-y.val;
}
});
//双指针遍历
int i = 0,j = num.length-1;while(i<j){
if(num[i].val + num[j].val == target){
if(num[i].index<num[j].index){
return new int[]{num[i].index+1,num[j].index+1};
}else{
return new int[]{num[j].index+1,num[i].index+1};
}
}else if(num[i].val + num[j].val < target){
i++;
}else{
j--;
}
}
return new int[]{0,0};
}
}