给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那 两个整数,并返回它们的数组下标。
例如 输入 nums[]{2,2,2,2},target=4 ;
返回[0,1],[0,2],[0,3],[1,2],[1,3],[2,3];
代码如下:
import java.util.ArrayList;
public class Demo4 {
public Object[] twoSum(int[] sum, int target){
//如果下标0的数+下标1的数为target,或者下标0加下标2=target,就先存入集合
ArrayList list = new ArrayList();
int len = sum.length;
for (int i = 0; i <len-1 ; i++) {
//因为数组如果为{2,2,2,2},下标[1,1],[2,1]则重复
for (int j = i+1; j < len; j++) {
if(sum[i]+sum[j]==target){
list.add(i);
list.add(j);
}
}
}
return list.toArray();
}
public static void main(String[] args) {
Demo4 demo4 = new Demo4();
Object [] a = demo4.twoSum(new int[]{2,2,2,2},4);
//打印下标为01 23 ,i+2a[i+1]不会被打两遍
for (int i = 0; i < a.length; i=i+2) {
System.out.println("[" + a[i] + "," + a[i + 1] + "]");
}
}
}
测试结果: