The running time of algorithm is at most $O(n^2)$
The two phrases

The running time is $O(n^2)$

and

The running time is at most $O(n^2)$

mean the same thing.
This is similar to the following two equivalent claims:

$x = y$ for some $y \leq z$.
$x \leq y$ for some $y \leq z$.

Why would we ever use &quot;at most $O(n^2)$&quot;, then? Sometimes we want to stress that the bound $O(n^2)$ is loose, and then it makes sense to use &quot;at most $O(n^2)$&quot;. For example, suppose that we have a multi-part algorithm, which we want to show runs in time $O(n^2)$. Suppose that we can bound the running time of the first step by $O(n)$. We could say &quot;the first part runs in $O(n)$, which is at most $O(n^2)$&quot;.