Deslocamento para a esquerda e para a direita
Crie duas funções que desloquem circularmente um vetor de números inteiros pela quantidade indicada de posições: um deslocamento para a esquerda move os valores do início para o fim, enquanto um deslocamento para a direita move os valores do fim para o início.
[1, 2, 3, 4, 5]
[2, 3, 4, 5, 1] // deslocamento para a esquerda de 1
[5, 1, 2, 3, 4] // deslocamento para a esquerda de 4, ou deslocamento para a direita de 1
[3, 4, 5, 1, 2] // deslocamento para a direita de 3Exemplos
Program.LeftShift(new int[] { 1, 2, 3, 4 }, 1) ➞ new int[] { 2, 3, 4, 1 }
Program.RightShift(new int[] { 1, 2, 3, 4 }, 1) ➞ new int[] { 4, 1, 2, 3 }
Program.LeftShift(new int[] { 1, 2, 3, 4, 5 }, 3) ➞ new int[] { 4, 5, 1, 2, 3 }
Program.LeftShift(new int[] { 1, 2, 3, 4, 5 }, 5) ➞ new int[] { 1, 2, 3, 4, 5 }
// Uma volta completa devolve o vetor à ordem inicial.
Program.LeftShift(new int[] { 1, 2, 3, 4, 5 }, 6) ➞ new int[] { 2, 3, 4, 5, 1 }
// Reduza as quantidades de deslocamentos maiores que o tamanho do vetor módulo esse tamanho.Notas
- A quantidade de deslocamentos pode superar o tamanho do vetor.
- A quantidade de deslocamentos nunca é negativa.