JavaScript, 66 65 62 60 bytes
Pega a entrada como uma sequência, retorna truepara números não desejados, uma sequência vazia (falsey) para números de um dígito e falseoutros.
([s,...a])=>a+a&&a.every(x=>eval(s+"<>"[++y%2]+x,s=x),y=s<a)
Tente
Execute o snippet abaixo para testar 0-9e 25 números aleatórios <10,000,000.
f=
([s,...a])=>a+a&&a.every(x=>eval(s+"<>"[++y%2]+x,s=x),y=s<a)
tests=new Set([...Array(10).keys()])
while(tests.add(Math.random()*1e7|0).size<35);
o.innerText=[...tests].map(x=>(x=x+``).padStart(7)+` = `+JSON.stringify(f(x))).join`\n`
<pre id=o></pre>
Explicação
Alguns truques divertidos neste, então eu acho que merece uma explicação rara para uma solução JS de mim.
()=>
Começamos, simplesmente, com uma função anônima que pega a sequência inteira como argumento quando chamada.
[s,...a]
Esse argumento é imediatamente desestruturado em 2 parâmetros: ssendo o primeiro caractere na string e asendo uma matriz que contém os caracteres restantes (por exemplo, "461902"torna s="4"- se e a=["6","1","9","0","2"]).
a+a&&
Primeiro, concatenamos aconsigo mesmo, que lança as duas ocorrências em seqüências de caracteres. Se a entrada for um número de um dígito, aficará vazia e, portanto, se tornará uma sequência vazia; uma string vazia mais uma string vazia ainda é uma string vazia e, como isso é falso no JS, paramos de processar no AND lógico e produzimos nossa string vazia. Em todos os outros casos a+a, será verdade e, portanto, continuamos na próxima parte da função.
a.every(x=>)
Nós vamos estar verificando se cada elemento xem aretornos trueao passado através de uma função.
y=s<a
Isso determina qual será nossa primeira comparação ( <ou >) e, em seguida, alternaremos a partir daí. Verificamos se a string sé menor que a matriz a, que é convertida em uma string no processo, portanto, se sé menor que o primeiro caractere ema , yserá trueou falsenão.
s+"<>"[++y%2]+x
Construímos uma string com o valor atual de sno início e xno final. No meio, indexamos a string "<>"incrementandoy , seu valor booleano inicial em um número inteiro e modulo em 2, fornecendo-nos 0ou 1.
eval()
Avalie essa corda.
s=x
Finalmente, passamos um segundo argumento para eval, que ele ignora, e o usamos para definir o valor de spara o valor atual de xpara a próxima iteração.