Articles of algoritmo

Um algoritmo para inflar / desinflar (offset, buffering) polígonos

Como eu iria “inflar” um polígono? Isto é, eu quero fazer algo semelhante a isto: A exigência é que as bordas / pontos do novo (inflado) polígono estejam todos na mesma distância constante dos polígonos antigos (originais) (na imagem do exemplo eles não são, desde então ele teria que usar arcos para vértices inflados, mas […]

Reverter a ordenação de palavras em uma string

Eu tenho essa string s1 = “My name is XYZ” e eu quero inverter a ordem das palavras para que s1 = “ZYX is name My” . Eu posso fazer isso usando uma matriz adicional. Eu pensei muito, mas é possível fazer isso no local (sem usar estruturas de dados adicionais) e com a complexidade […]

Obtendo a seqüência de caracteres mais próxima

Eu preciso de uma maneira de comparar várias seqüências de caracteres para uma seqüência de teste e retornar a seqüência de caracteres que se assemelha a ela: TEST STRING: THE BROWN FOX JUMPED OVER THE RED COW CHOICE A : THE RED COW JUMPED OVER THE GREEN CHICKEN CHOICE B : THE RED COW JUMPED […]

Mapeamento de dois inteiros para um, de maneira única e determinística

Imagine dois inteiros positivos A e B. Eu quero combinar esses dois em um único inteiro C. Não pode haver outros inteiros D e E que combinem com C. Portanto, combiná-los com o operador de adição não funciona. Por exemplo, 30 + 10 = 40 = 40 + 0 = 39 + 1 Nem o […]

Como replace todas as ocorrências de um caractere em string?

Qual é a maneira efetiva de replace todas as ocorrências de um caractere por outro caractere em std::string ?

Encontre um par de elementos de uma matriz cuja sum é igual a um determinado número

Dado array de n inteiros e dado um número X, encontre todos os pares únicos de elementos (a, b), cujo sumtório é igual a X. O seguinte é a minha solução, é O (nLog (n) + n), mas não tenho certeza se é ou não ideal. int main(void) { int arr [10] = {1,2,3,4,5,6,7,8,9,0}; findpair(arr, […]

Analisador de equação (expressão) com precedência?

Desenvolvi um analisador de equações usando um algoritmo de pilha simples que manipulará operadores binários (+, -, &, *, /, etc), operadores unários (!) E parênteses. No entanto, usar esse método me deixa com tudo o que tem a mesma precedência – ele é avaliado da esquerda para a direita, independentemente do operador, embora a […]

Como mesclar duas matrizes ordenadas em uma matriz ordenada?

Isso me foi solicitado em uma entrevista e esta é a solução que eu forneci: public static int[] merge(int[] a, int[] b) { int[] answer = new int[a.length + b.length]; int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) { if (a[i] < b[j]) { answer[k] […]

Como determinar a subseqüência crescente mais longa usando programação dinâmica?

Eu tenho um conjunto de inteiros. Eu quero encontrar a maior subsequência crescente desse conjunto usando programação dinâmica.

Qual é o algoritmo mais rápido para encontrar números primos?

Qual é o algoritmo mais rápido para descobrir números primos usando C ++? Eu usei o algoritmo da peneira, mas ainda quero que seja mais rápido!