Next Greater Element III

MediumMathtwo pointers

Solve this the way you would in the interview: out loud, on a timer, with an AI interviewer asking follow-ups while you code. You get a scored report at the end.

Practice this as a mock interviewFree to start, no account needed

Problem

Given a positive integer n, find the **smallest** integer that is strictly greater than n and uses exactly the same digits as n (each digit the same number of times, just rearranged). Return that integer. If no such integer exists, or if it is larger than 2^31 - 1 (so it would not fit in a 32-bit signed integer), return -1. Aim for O(d) time where d is the number of digits.

Examples

Input: n = 1243
Output: 1324
Of all rearrangements of the digits 1, 2, 4, 3, the smallest one above 1243 is 1324.
Input: n = 4321
Output: -1
The digits are already in descending order, so no rearrangement is larger.
Input: n = 1999999999
Output: -1
The next arrangement would be 9199999999, which does not fit in a 32-bit signed integer.

Constraints

  • 1 <= n <= 2^31 - 1

What the interviewer grades

A correct solution is one of five scores. The report also grades problem understanding (did you clarify inputs and edge cases before coding), problem solving, communication while you work, code quality, and testing. See a sample report, or read up on the pattern in the lessons.

More two pointers problems