标签:leetcode
题意:求出某个数组中的两个数值的和等于一个固定的target的该两个数值的下标,按从小到大的顺序. public int[] twoSum(int[] numbers, int target) {
<span style="white-space:pre"> </span>assert (numbers == null || numbers.length < 2);
class node {//辅助类
int index;
int value;
public node(int index, int value){ this.index = index; this.value = value; };
}
int[] rs = { 0, 0 };
List<node> nodes = new ArrayList<node>();
for (int index = 0 ;index< numbers.length; ++index){
nodes.add(new node(index+1, numbers[index]));//index 从1开始
}
Collections.sort(nodes, new Comparator<node>() {//排序
@Override
public int compare(node o1, node o2) {
return o1.value - o2.value;
}
});
int i = 0, j = nodes.size()-1;
while (i<j){
int v1 = nodes.get(i).value;
int v2 = nodes.get(j).value;
if(v1 + v2 > target){
j --;
continue;
}
if(v1 + v2 == target){
rs[0] = Math.min(nodes.get(i).index, nodes.get(j).index);
rs[1] = Math.max(nodes.get(i).index, nodes.get(j).index);
return rs;
}
if(v1 + v2 < target){
i ++;
continue;
}
}
return rs;
}标签:leetcode
原文地址:http://blog.csdn.net/youmengjiuzhuiba/article/details/44784317