1. 程式人生 > >陣列兩個數和為指定值的陣列下標

陣列兩個數和為指定值的陣列下標

散列表方式:

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("不存在"); }