1. 求两个数的和
给定一个整型数组,从中挑选两个数字,使其相加为一个为一个给定的值,返回这两个值所有数组中位置下标,位置下标小的在前面,位置下标从1开始。
例如:
输入:nums= {2,7,11,13} target=24
import java.util.Arrays;
import java.util.HashMap;
public class Count {
public static void main(String[] args) {
int[] array=new int[]{2,7,11,13,18,19,40,60,100};
int count=160;
int[] result=getIndexs(array, count);
if(null!=result){
System.out.println(Arrays.toString(result));
}
result=getIndexsAdv(array, count);
if(null!=result){
System.out.println(Arrays.toString(result));
}
}
public static int[] getIndexs(int[] array,int count){
int[] result=new int[2];
int itCount=0;
for(int i=0;i<array.length;i++){
for(int j=i+1;j<array.length;j++){
itCount++;
if(j<array.length){
if((array[i]+array[j])==count){
result[0]=i;
result[1]=j;
System.out.println("遍历次数"+itCount);
return result;
}
}
}
}
return null;
}
public static int[] getIndexsAdv(int[] array,int count){
int[] result=new int[2];
int itCount=0;
HashMap<Integer, Integer> maps=new HashMap<>();
for(int i=0;i<array.length;i++){
maps.put(array[i], i);
}
for(int i=0;i<array.length;i++){
itCount++;
int b=count-array[i];
Integer index=maps.get(b);
if(null!=index){
System.out.println("adv 遍历次数"+itCount);
result[0]=i;
result[1]=index;
return result;
}
}
return null;
}
}