Hash table runtime complexity (insert, search and delete)

Hash tables are O(1) average and amortized case complexity, however it suffers from O(n) worst case time complexity. [And I think this is where your confusion is] Hash tables suffer from O(n) worst time complexity due to two reasons: If too many elements were hashed into the same key: looking inside this key may take … Read more

Find common substring between two strings

For completeness, difflib in the standard-library provides loads of sequence-comparison utilities. For instance find_longest_match which finds the longest common substring when used on strings. Example use: from difflib import SequenceMatcher string1 = “apple pie available” string2 = “come have some apple pies” match = SequenceMatcher(None, string1, string2).find_longest_match() print(match) # -> Match(a=0, b=15, size=9) print(string1[match.a:match.a + … Read more

Understanding Time complexity calculation for Dijkstra Algorithm

Dijkstra’s shortest path algorithm is O(ElogV) where: V is the number of vertices E is the total number of edges Your analysis is correct, but your symbols have different meanings! You say the algorithm is O(VElogV) where: V is the number of vertices E is the maximum number of edges attached to a single node. … Read more

What would cause an algorithm to have O(log log n) complexity?

O(log log n) terms can show up in a variety of different places, but there are typically two main routes that will arrive at this runtime. Shrinking by a Square Root As mentioned in the answer to the linked question, a common way for an algorithm to have time complexity O(log n) is for that … Read more

Big O of JavaScript arrays

NOTE: While this answer was correct in 2012, engines use very different internal representations for both objects and arrays today. This answer may or may not be true. In contrast to most languages, which implement arrays with, well, arrays, in Javascript Arrays are objects, and values are stored in a hashtable, just like regular object … Read more

What is pseudopolynomial time? How does it differ from polynomial time?

To understand the difference between polynomial time and pseudopolynomial time, we need to start off by formalizing what “polynomial time” means. The common intuition for polynomial time is “time O(nk) for some k.” For example, selection sort runs in time O(n2), which is polynomial time, while brute-force solving TSP takes time O(n · n!), which … Read more