返回两个数的下标(单解)
若要求返回数组的索引,则不能将数组进行排序来解决
class Solution {
public int[] twoSum(int[] nums, int target) {
if(nums.length < 2 || nums == null){
return new int[2];
}
for(int i=0;i < nums.length;i++){
for(int j=0;j < nums.length; j++){
if(nums[i]+nums[j] == target){
return new int[]{i,j};
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
}
返回这两个数字,多解的情况
public ArrayList<Integer> twoSum(int[] nums, int target) {
ArrayList<Integer> list = new ArrayList();
Arrays.sort(nums);
int i = 0;
int j = nums.length - 1;
while (i < j){
int sum = nums[i] + nums[j];
if(sum == target){
list.add(nums[i]);
list.add(nums[j]);
i++;
j--;
}else if(sum > target){
j--;
}else{
i++;
}
}
return list;
}
ps:本文为自己刷题练习且参考到了题解,如有侵权,请及时联系,我会在第一时间删除!