Como embaralhar uma matriz de caracteres sem duas duplicatas próximas uma da outra? [duplicado
Esta pergunta já tem uma resposta aqui:
lgoritmo eficiente para encomendar diferentes tipos de objet 5 respostasFiz essa pergunta em uma entrevista:
Como embaralhar uma matriz de caracteres sem duas duplicatas próximas uma da outr
O algoritmo que criei foi:
tenha umHashMap
de caractere, contagem de ocorrência de pares de caracteres. Com isso, encontre a contagem de elementos duplicados e únicos.Se duplicado> exclusivo, não é possível formar uma matriz aleatória sem 2 elementos duplicados próximos um do outro (?)se exclusivo> = duplicado, possui 2 pilhas - 1 contendo caracteres únicos e uma contendo caracteres duplicados. Construa a matriz resultante de maneira a destacar um elemento da pilha exclusiva primeiro e a seguir um elemento da pilha duplicada. RepetiPor exemplo
[a,b,b,c] shuffled array with above algorithm - [a,b,c,b];
[b,b,b,c] unique < duplicate return error
Mas tenho certeza de que estou complicando demais a lógica. Existe uma maneira mais fácil e fácil de fazer isso?