ALLAN AVELAR
Boa Tarde<!-- --> <username class="jsx-41964832"></username><icon class="jsx-3111688975"><img alt="🍜" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAAAS1BMVEVHcEwAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAADoEiS7kWf/1nnrLDy1jWT5vsP40HXW1tbGxsYZGRlhYWGcnJzp6elKSkrDpFyEFbgAAAAACnRSTlMAGv//s3SKS/LOykLjcwAAAZRJREFUWMPtmOuOgyAQhRVRwMtWbtr3f9IVF2On9QKjNZvdnoT4Q/0CBzIzTJJ8hBKjnHhxyvCcggAVGAZB6QrQ/T6PQ6C6Hkb780SDqkF1PY9tXQE6bWlObTuPQx6FawP0Naiq5rGtqzz6g6AJBkHIcPQB7Yv7wHYYRKcjcBTEzgIl+VmghImTQH7nPqCnnRL8OTiEhBEucoBJxcJHgfFIpA+gJU5wYBMvJxAJIjmYUN9lCHUGTMn5LDOUpHMcbHaGFDgep4JKpN4H+n0eddmtaW7uVdwTgPgIasqycR9EPTtwjtzJVjiQBCfbJSCLW5odfqXgFmNwXhtw63GZTONAeviVwSytMBwFvD6wNgMs8lla4oIIAVfMMbTFg3oYaacp2ViOfZmQr2VUvNPAoTEhuY3TUTZJt/U8XayKdMSclF5Y2JyTbJQ/JF+/7vdBy5P9VkvA58l+d33KkPX5jD75QkIbK1fyZSet0b6A2Gh2pDS8a0DTgPIxoHLY7708tGpWq6LQFg4rqOBrlRUtDjSC/re+Abd+NlUf6yOQAAAAAElFTkSuQmCC" class="jsx-3111688975"/></icon>Seja bem vindo ao meu app!Instalar como aplicativo PWAInstalar em seu dispositivoAcesso RestritoEntrar / RegistrarBackoffice System (BOS)Dados CadastraisProjetos / ServiçosDownloads / ProdutosCréditos / ComprasChromecast AppsEspaço de AcessosNotificaçõesDesconectarConteúdos disponíveisHomeSobre Mim3IntroduçãoResumo ProfissionalMetodologia de TrabalhoPortfólioPrincipais ProjetosFlex Network5IntroduçãoMineração PúblicaFlash TradingFlex TradingTutoriaisLaboratório7💰EASYBANK💳EASYPAY💼EASYWORK👨‍🎓MASTERCLASS📲YOU2APP💘COOLPIDO🎁BRXInsightsHackerRank5Sock MerchantCounting ValleysRepeated StringJumping On CloudsLeft Rotation
EntrarRegistrarEsqueceu sua senha?EntrarNão tem uma conta? Crie uma agora!
🕓 Outubro 19, 2018🙇 5 minutos de leitura

Warm-up Challenges ⚡ Left Rotation

Estou postando sobre as minhas respostas aos desafios do HackerRank como forma de melhorar meu aprendizado, reforçar meu conhecimento e estabelecer uma compreensão dos conceitos abordados. Se eu ajudar alguém ao longo do caminho, melhor ainda! Não afirmo que as respostas são as melhores ou mais eficientes, a menos que seja indicado o contrário. Elas são simplesmente as respostas que meu cérebro e minha intuição criaram para resolver o problema naquele momento.

Left Rotation é um dos desafios de "Arrays" com a dificuldade 'EASY'.


Qual o desafio?

Uma operação de rotação à esquerda em uma matriz desloca cada elemento da matriz para a esquerda. Por exemplo, se duas rotações à esquerda forem realizadas na matriz [1, 2, 3, 4, 5], a matriz se tornará [3, 4, 5, 1, 2].

Dada uma matriz a de n números inteiros e um número, d, de rotações a esquerda na matriz. Retorne o array atualizado para ser impresso como uma única linha de inteiros separados por espaços.

O que temos que fazer?

Uma função que retorne uma matriz de inteiros após as rotações esquerdas terem sido realizadas.

Parâmetros
  • a = uma matriz de inteiros
  • d = número de rotações
Limites
  • 1 <= n <= 10 ^ 5
  • 1 <= d <= n
  • 1 <= a [i] <= 10 ^ 6

Sample Input

5 4
1 2 3 4 5

Sample Output

5 1 2 3 4

Solução

function leftRotation(a, d) {
  return a.concat(a.splice(0, d));
}

Lógica

Toda a lógica está contida nesta única linha, mas podemos dividi-la em três partes:

Primeiro usei .splice() para obter os primeiros d itens no array a[0 - d]. No ínicio do desafio é informado o seguinte limite que define esta lógica 1 <= d <= n, ou seja, não preciso me preocupar em girar a matriz para a esquerda mais vezes que os itens na matriz.

Em seguida, usei .concat() para concatenar (ou mesclar) o que resta de a, ou tudo depois de a[d], com o que separei no primeiro passo a[0 - d].

E então, finalizo a função retornando essa matriz recém-organizada. 🖖


🕵Soluções Extras

Outras Linguas que eu falo


💎 Ruby

def leftRotation(a, d)
  a.rotate(d)
end

🐍 PYTHON 2 & 3

def leftRotation(a, d):
  return a[a:] + a[:a]

golang GOLANG

func leftRotation(a[] int32, d int32) []int32 {
  return append(a[d:], a[:d]...)
}

scala SCALA

def leftRotation(a: Array[Int], d: Int): Array[Int] = {
  return a.drop(d)++a.take(d);
}

javaJAVA 7 & 8

static int leftRotation(int[] a, int d) {
  int[] rotated = new int[a.length];
  for (int i = 0; i <  a.length; i++) {
        rotated[(i + a.length - d) % a.length] = a[i];
  }
  return rotated;
}

php PHP

function leftRotation($a, $d) {
  return array_merge(array_splice($a, $d, count($a)), array_splice($a, 0, $d));
}
Não afirmo que essas respostas são as melhores ou mais eficientes, elas são simplesmente as que meu cérebro e minha intuição criaram para resolver o problema naquele momento.
Sobre Mim Resumo Profissional Metodologia de Trabalho
Laboratório 💱 FLEX NETWORK / 🏭 💰 EASY BANK / ⏳ 💳 EASY PAY / ⏳ 💼 EASY WORK / ⏳ 👨‍🎓 MASTER CLASS / ⏳ 📲 YOU 2 APP / 🏭 💘 COOLPIDO / ⏳ 🎁 BRX / 🏭
PRINCIPAIS PROJETOS
Insights HACKERRANK #sockMerchant #countingValleys #repeatedString #jumpingOnClouds #leftRotation
Fale Comigo
This PWA was handcrafted with ❤ using Reactjs ➕ Nextjs and deployed on Github 🚀
Conectando-se ao Chrome Cast...