数组两个数和为指定值的数组下标

散列表方式:

public void findBathIndex(int[] arr,int k){
        if(arr==null){
            return;
        }
        Hashtable map=new Hashtable();
        for(int i=0;iint 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(iint sumTemp=array[i]+array[j];
            if(sumTemp==sum){
                System.out.println(i+":"+j);
                return;
            }else if(sumTemp>sum){
                j--;
            }else{
                i++;
            }
        }
        System.out.println("不存在");
    }

你可能感兴趣的:(秋招复习)