标签: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