陣列兩個數和為指定值的陣列下標
阿新 • • 發佈:2019-01-29
散列表方式:
public void findBathIndex(int[] arr,int k){
if(arr==null){
return;
}
Hashtable<Integer,Integer> map=new Hashtable<Integer,Integer>();
for(int i=0;i<arr.length;i++){
map.put(arr[i], i);
}
int i=0;
for (i=0;i<=arr.length/2;i++){
if(map.get(k-arr[i])!=null&&map.get(k-arr[i])!=i){
System.out.println(i+" "+map.get(k-arr[i]));
break;
}
}
if(i==arr.length/2+1){
System.out.println("不存在");
}
}
排序後查詢:
/**
* 每次start與end相加:
* 若大於k,則end--
* 若小於k,則start++
*
*/
public static void find(int[] array,int sum){
Arrays.sort(array);
int i=0;
int j=array.length-1;
while(i<j){
int sumTemp=array[i]+array[j];
if(sumTemp==sum){
System.out.println(i+":"+j);
return;
}else if(sumTemp>sum){
j--;
}else{
i++;
}
}
System.out.println("不存在");
}