@vega2475

Как узнать монотонное ли число?

На вход дается число
n
как узнать монотонное ли оно?
Монотонным называется - то число числа в котором монотонно убывают или монотонно возрастают.
Например: 110, 111, 122, 123, 455, 554. - являются монотонными. 101, 121, 231 - немонотонные.
Массивы и строки использовать нельзя.

public static boolean isMonotonic(int num) {
        if (num < 100) return true;

        int prev = num % 10;//0
        num /= 10;//10
        boolean isIncreasing = isIncreasing(num % 10, prev);

        while (num > 0) {
            if (isIncreasing != isIncreasing(num % 10, prev)) {
                return false;
            }
            prev = num % 10;
            num /= 10;
        }
        return true;
    }

    public static boolean isIncreasing(int left, int right) {
        return left <= right;
    }

(эта функция написана только для проверки на возрастающую монотонность, но и для возрастания не работает, например число 120 он считает монотонным)
У меня выдает неверный ответ
  • Вопрос задан
  • 188 просмотров
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
У меня какое-то дежа-вю. Кажется что вопрос повторяется. Ну вот рекурсивно. С дополнительным опциональным параметром.

def isMonotonic(i:Int,o:Option[Int] = None) : Boolean = {
	if (o.isDefined) (i % 10 <= o.get) else isMonotonic(i / 10,Some(i % 10))
}

Написан на Scala но можно без труда переделать в Java. Option/Optional там тоже есть.
Ответ написан
Комментировать
@Sumor
В каждой шутке, есть небольшая доля шутки:
var testNumber = 123457;
var testNumberStr = testNumber.ToString();
if(testNumberStr == string.Join("", testNumberStr.AsEnumerable().OrderBy(c => c)))
	Console.WriteLine("mono");
else
	Console.WriteLine("not mono");
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы