Loading collection data...
Collections are a way for you to organize kata so that you can create your own training routines. Every collection you create is public and automatically sharable with other warriors. After you have added a few kata to a collection you and others can train on the kata contained within the collection.
Get started now by creating a new collection.
This comment is hidden because it contains spoiler information about the solution
[10,10] is the correct solution in that case
for input like [8,10,10,1] you'll get [10,10] instead of [8,10]
mutating array isn't
This can be solved in O(N) time & O(1) space.
I have basically no background in algorythm efficiency analysis so I don't focus on it ever so thank you for the explanation and suggestion; I would implement your solution using a
.reduce()
but it would equate to the same thing.I imagine that there are more difficult kata where efficiency of the solution plays a part in success or not and I actually avoid those as it isn't something that I have ever needed to take into account.
If you were to use
Array.sort()
, first create a new array by doingarray.slice(0)
, which will create a shallow copy of the input array. Then it can be sorted without mutating the input.However, just using a simple for loop allows you to complete this Kata in
O(n)
instead ofO(n log(n))
; Using sort means that for large arrays you're going to see a huge performance disadvantage versus just finding the max and second max using a for loop.Thanks for the comment. What solution suggestion do you have?
Any solution using sort isn't best practice, as it's possible to complete this Kata in one iteration over the input array instead of spending time to sort it.
(not to mention, this mutates the input array as well!)
I found this same solution on stackoverflow, but it's flawed. For example, ["1,2,3"].toString() === [1,2,3].toString(); //true