我有以下代码:
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;
}
该函数应返回以给定前缀开头的所有单词
代码中的列表是一个已排序的ArrayList。此代码的复杂度为O(n)
我该如何改进呢?
例如在log(n)
时间内运行。
答案 0 :(得分:2)
问题是 - 你可以在O(logn)
时间内完成吗?
如果list
中的一半元素具有所需的前缀怎么办?
您需要将列表的一半添加到新列表中 - 这仍然是O(n)
。
答案 1 :(得分: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;
}