題目:
思路:這個應該也可以用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; }