java:
class Solution {
static int[] twoSum(int[] nums, int target) {
int[] originalNums = new int[nums.length];
for (int m = 0; m < nums.length; m++) {
originalNums[m] = nums[m];
}
Arrays.sort(nums);
Integer[] a = new Integer[2];
int j = nums.length - 1;
int i = 0;
while (i < j) {
if (nums[i] + nums[j] > target) {
j--;
} else if (nums[i] + nums[j] < target) {
i++;
} else {
for (int k = 0; k < originalNums.length; k++) {
if (originalNums[k] == nums[i]) {
if (a[0] == null) {
a[0] = k;
continue;
}
}
if (originalNums[k] == nums[j]) {
if (a[1] == null) {
a[1] = k;
continue;
}
}
}
break;
}
}
int[] b = new int[2];
b[0] = a[0];
b[1] = a[1];
return b;
}
}
php:
class Solution {
/**
* @param Integer[] $nums
* @param Integer $target
* @return Integer[]
*/
function twoSum($nums, $target)
{
$nums_origin = $nums;
sort($nums);
for ($i = 0; $i < sizeof($nums); $i++) {
for ($j = sizeof($nums) - 1; $j > 0; $j--) {
if (($nums[$i] + $nums[$j]) < $target) {
break;
} elseif (($nums[$i] + $nums[$j]) > $target) {
continue;
} else {
$m[] = array_search($nums[$i],$nums_origin);
$nums_origin[$m[0]]=$nums_origin[$m[0]]-1;
$m[] = array_search($nums[$j],$nums_origin);
return $m;
}
}
}
}
}