-1

次のコードがあります。

public List<String> function(String pre) {
    List<String> temp = new ArrayList<>();
    for(String str : list) {
        if(str.startsWith(pre)
            temp.add(str);
        if(str.charAt(0) > pre.charAt(0))
            break;
    }
    return temp;
}

この関数は、指定されたプレフィックスで始まるすべての単語を返す必要があります。
コード内の list は、並べ替えられた ArrayList です。このコードはO(n)複雑です。
どうすれば改善できますか?
たとえば、時間内に実行しlog(n)ます。

4

2 に答える 2

2

Question is - can you do it in O(logn) time?
What if half of the elements in list have the desired prefix? You need to add that half of the list to a new list - this is still O(n).

于 2012-12-26T13:47:45.337 に答える
0

はい、できます

List<String> function(List<String> list, String pre) {
    List<String> temp = new ArrayList<>();
    for(String str : list) {
        if(str.startsWith(pre))
            temp.add(str);
    }
    return temp;
}
于 2012-12-26T13:43:09.417 に答える