In fact, I don't know what the point of this problem is ...
Two methods, Hashmap/two pointers
HashMap
1 Public int[] Twosum (int[] numbers,inttarget) {2 if(Numbers.length = = 0) {3 return NULL;4 }5 int[] res =New int[2];6Map<integer, integer> map =NewHashmap<integer, integer>();7 for(inti = 0; i < numbers.length; i++) {8 if(!map.containskey (Target-Numbers[i])) {9 Map.put (Numbers[i], i);Ten}Else { OneRes[0] = Map.get (target-numbers[i]) + 1; ARES[1] = i + 1; - returnRes; - } the } - returnRes; -}
Pointers
1 Public int[] Twosum (int[] numbers,inttarget) {2 if(Numbers.length = = 0) {3 return NULL;4 }5 int[] res =New int[2];6 intWalker = 0;7 intRunner = Numbers.length-1;8 intsum = Numbers[walker] +Numbers[runner];9 while(Sum! =target) {Ten if(Sum >target) { Onerunner--; A}Else { -walker++; - } thesum = Numbers[walker] +Numbers[runner]; - } -Res[0] = Walker + 1; -Res[1] = runner + 1; + returnRes; -}
167. Both Sum ii-input array is sorted