Fix runtime for backtracking #4663
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Time & Space Complexity for the "Backtracking" solution is incorrect.
It is stated as:
O(m∗n∗4^t+s). Where m is the number of rows, n is the number of columns, t is the maximum length of any word in the array and s is the sum of the lengths of all the words.
However, this is looser-bound time complexity for the Backtracking (Trie) and Backtracking (Trie + Hash Set)(those bounds are slightly different than O(m∗n∗4^t+s) but are correct).
For "Backtracking", the solution should be:
O(w * m∗n∗4^t).
Reasoning:
In the base backtracking solution, we iterate over every word, and for every word, we try to find a solution. So we need the w component, where w is the number of words we're checking for.
Additionally, we arn't creating a trie in the standalone backtracking solution, so the "+ s" component should not be included.
Finally, we use the tighter bound of 4 * 3^t-1 to be in line with the other solution runtimes. This value comes from the fact that we have 4 options on our first search of the board, but because we don't want to backtrack to the option we just chose, we have 3 remaining options, hence the * 3 component.. the t -1 indicates we've already used one letter from our longest word(t).
Important
Please make sure the file name is lowercase and a duplicate file does not already exist before merging.