在有序但還有空的數組中查找字符串

題目:

思路:這個應該也可以用map的那種吧,不過需要遍歷整個數組。複雜度是o(n);使用二分算法的話,時間複雜度是o(logn)。而且這個字符數組的話還是一個有序的字符數組。這個題我自己寫的輸入輸出可能是有些問題,結果不正確。改用直接寫數組是對的。

代碼:

public static int method(String[]a1,String b){
    if(a1==null||a1.length==0||b==null){
        return -1;
    }
    int res=-1;
    int left=0;
    int right=a1.length-1;
    int mid=0;
    int i=0;
    while(left<=right){
        mid=(left+right)/2;
        if(a1[mid]!=null&&a1[mid].equals(a1[mid])){
            res=mid;
            right=mid-1;
        }else if(a1[mid]!=null){
            if(a1[mid].compareTo(b)<0){
                left=mid+1;
            }
            else{
                right=mid-1;
            }
        }
        else{
             i=mid;

                while(a1[i]==null&&--i>=left)
                    ;


            if(i<left||a1[i].compareTo(b)<0){
                left=mid+1;
            }
            else{
               
                res=a1[i].equals(b)?i:res;
                right=i-1;
            }
        }
    }
    return res;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章