稀疏數組搜索

在這裏插入圖片描述
就知道個簡單的二分算法,這次看題解發現了新的大陸。
原來二分還能這麼玩啊。

class Solution {
    public int findString(String[] words, String s) {
        int left=0;
        int right=words.length-1;
        int temp=0;
        while(left<=right){
            while(left<=right&&words[left].equals("")) left++;
            while(left<=right&&words[right].equals("")) right--;
            //從兩頭向中間逼近。
            
            int mid=left+(right-left)/2;
            temp=mid;//記錄mid的值,以方便後面使用
            while(words[mid].equals("")&&mid<right) mid=mid+1;
            //這裏採用向後的遍歷方式,找到不爲空的字符串
            
            if(words[mid].equals("")){//到達了右邊界,且爲空,則直接調整右邊界
                 right=mid-1;
                 continue;
            }
            if(words[mid].equals(s)) return mid;
            else if(words[mid].compareTo(s)<0)  left=mid+1;
            else right=mid-1;
        }
        return -1;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章