打印一个字符串真的需要 O(n) 吗?

lal*_*ali 4 algorithm big-o

我正在做《破解编码面试》中的一个示例,我读到执行System.out.println(prefix);(其中前缀是字符串)将花费“O(n) 时间,因为每个字符都需要打印”。如果将类似的打印语句放在 O(1) 算法中(例如哈希表查找等),是否会使整个算法变为 O(n)?

小智 5

在描述算法的大 O 复杂性时,定义表达式中的变量代表什么至关重要。往往可能有好几个!例如,在二叉树中查找整数,然后打印与该节点关联的字符串,其特征可能为O(m + log n),其中n是树中对象的数量,m是字符串的长度。

使用单个变量来表示多个不同因素(例如,哈希表中的元素数量及其大小)始终是错误的,并且这样做将导致明显荒谬的结果(例如,哈希表查找是O(n)) 。