Editor

Next Bigger Number

#359 · Math · Advanced · 125 XP · about 20 min

Write next_bigger(n) that returns the smallest number greater than n made of exactly the same digits as n (each digit used as many times as in n). If no arrangement of the digits is bigger, return -1.

Examples

next_bigger(12)      # returns 21
next_bigger(2017)    # returns 2071
next_bigger(531)     # returns -1
next_bigger(115)     # returns 151

The digits of 531 are already in falling order, so every other arrangement is smaller.

Constraints

  • 1 <= n <= 10^18
  • Counting upwards from n, or trying every arrangement of 18 digits, takes far too long.

Fastest solvers

Leaderboard

First solves only, ranked by stars and then time.