I notice a lot of people did theirs differently so I thought I'd explain what I did!
One of the things I noticed that led to my solution, was the fast that the next largest number, was 1 'sort' away from the number we had. What I mean is if we imagine our number as an array of its digits, the number we wanted was 1 swap away AND would make our 'array' more sorted than it was before!
This made me realize that a modified bubble sort was exactly what I was looking for! So below I conconted something loosely based on a bubble sort. It starts at the end of the number and moves backward seeing if it can make a swap. If it does, it returns the swapped value. If we make it to the beggining of the list we know there wasn't a larger number and simply return None!
I wanted to do it like this (in Erlang), but didn’t figure out how to. Nice.
I think you have a mistake: next_largest(351) should return 513, and you return 531.
That’s where I gave up with the swapping approach.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.