2020.2.17
11:30
思路:看到陣列有序,首先應該要想到用二分法來去做,框架要先搭建出來,begin、mid、
end、以及mid>要找的元素,end=mid-1,mid《時,begin=mid+1.
其次,考慮到時字串,在等於空的時候,用equals方法,在比較的大小的時候,用
compareto方法。
**:
package lanqiaoknowledge;
public
class 在有空字串的有序陣列中查詢 }if
(arr[mid]
.compareto
(p)>0)
else
if(arr[mid]
.compareto
(p)<0)
else
}return-1
;}public
static
void
main
(string[
] args)
;int res=
indexof
(s,"bd");
system.out.
println
(res);}
}
思路:傳統的用迴圈的寫法,寫出來的複雜度為o(n),可以將o(n)優化到o(log n)。
思路:log(n)的話,結合之前來看,是將本來的問題每次折半,上樓梯或者下樓梯的時候
第一次變成2,第二次變成4,第三次8,剩下的7次再交給第二個遞迴去做。這樣就可以將
時間複雜度優化為o(log n)。
**:
package lanqiaoknowledge;
public
class 求a的n次冪
return res;
}static
intpow2
(int a,
int n)
int res=a;
//a不能作為乙個變數,所以設定乙個數將a賦值給它
int exit=1;
//初始的冪
while
((exit<<1)
<=n)
//補差值
return res*
pow2
(a,n-exit)
;//如果n不能準確的翻倍來得到。不補差值,再呼叫遞迴
}public
static
void
main
(string[
] args)
}
覺得越來越有些上頭了,奧利給!
在有空字串的有序字串陣列中查詢 有點問題
存在乙個排序後的字串陣列,其中散布著一些空字串。根據使用者輸入的字串進行索引。例如,有序字串陣列。方法1 二分查詢,迭代方式 a a ac ad b ba b input x 0y len a 1 while 1 0 跟二分查詢的 一樣,只不過增加乙個判斷。判斷a item 是否是空串,若是空串,則...
在有序但還有空的陣列中查詢字串
題目 思路 這個應該也可以用map的那種吧,不過需要遍歷整個陣列。複雜度是o n 使用二分演算法的話,時間複雜度是o logn 而且這個字元陣列的話還是乙個有序的字元陣列。這個題我自己寫的輸入輸出可能是有些問題,結果不正確。改用直接寫陣列是對的。public static int method st...
在有序但含有空的陣列中查詢字串
題目 給定乙個字串陣列strs,在strs中有些位置為none,但在不為none的位置上,其字串是按照字典順序由小到大依次出現的。再給定乙個字串s,請返回s在strs 現的最左的位置。舉例 strs none,a none,a none,b none,c s a 返回1 strs none,a no...