Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
time o(nlogn) space . o(n)
class Solution {
public int[] twoSum(int[] nums, int target) {
if(nums == null || nums.length == 0)
return new int[0];
int[] nums2 = Arrays.copyOf(nums,nums.length);
Arrays.sort(nums2);
int[] res = new int[2];
int i = 0, j = nums2.length-1;
int a = 0, b = 0;
while(i < j){
int sum = nums2[i] + nums2[j];
if(sum < target){
i++;
}
else if(sum > target){
j--;
}
else{
a = nums2[i];
b = nums2[j];
break;
}
}
if(a != b){
for(int k = 0; k < nums.length; k++){
if(nums[k] == a){
res[0] = k;
}
if(nums[k] == b){
res[1] = k;
}
}
}
if(a == b){
int m = 0;
for(m = 0; m < nums.length; m++){
if(nums[m] == a){
res[0] = m;
break;
}
}
for(int n = m+1; n < nums.length; n++){
if(nums[n] == b){
res[1] = n;
break;
}
}
}
Arrays.sort(res);
return res;
}
}
class Solution {
public int[] twoSum(int[] numbers, int target) {
int[] result = new int[2];
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < numbers.length; i++) {
if (map.containsKey(target - numbers[i])) {
result[1] = i;
result[0] = map.get(target - numbers[i]);
return result;
}
map.put(numbers[i], i );
}
return result;
}
}