Ad
  • Custom User Avatar

    Strictly speaking, the time complexity of 'stop at 5' would be:

    O(min(N, f(k))) where f(k) is the number of elements needed to inspect for the given inputs (implying 5 <= f(k) <= N). This means the 'stop at 5' solution is better in all cases except the worst case.

    The overhead of checking the count is practically nothing and I struggle to think of a scenario (extremely small dictionaries?) where it isn't worth it to keep the count and stop.

  • Custom User Avatar

    Imo;

    O(N) vs O(N) - in worst case where autocomplete words are at the end of the list, runtime is same for both.

    Ω(N) vs Ω(1) - in the best case where the autocomplete words are at the start of the list, it may be worth it to stop looping when we have found 5.

  • Custom User Avatar

    Is it? O(n) versus O(1)? Not?

  • Custom User Avatar

    Yes, this iterates through every element of the list. I don't think the perfomance gained from returning after 5 results is worth it in this case, the algorithm is still of the same time complexity, and I think it looks cleaner this way.