Rotar Derecha, Paridad array y Duplicados

public static void main(String[] args) {
		int[] numeros= {1,2,3,4,5};
		System.out.println(Arrays.toString(rotarDerecha(numeros,2)));
		System.out.println(Arrays.toString(numeros));
		
	}
	/*
	 * Crear una función rotarDerecha a la que la pasamos un 
	 * array de enteros y nos devuelve el array con los elementos
	 *  desplazados a la derecha (el último va al principio)
		rotarDerecha([1,2,3,4]) -> [4,1,2,3]
	 */
	public static int[] rotarDerecha(int[] array, int pos) {
		int longitud=array.length;
		int[] nuevo=new int[longitud];
		// En el primero pongo el último
		// En los siguientes del nuevo pongo el que está en 
		// la posición anterior del que me pasan
		//nuevo[0]=array[array.length-1];
		for(int i=0;i<longitud;i++) {
			nuevo[i]=array[(i-pos+longitud) % longitud];
		}
		return nuevo;
		
	}

public static int paridadArray(int[] numeros) {
		// Dos contadores: pares e impares
		int pares = 0;
		int impares = 0;
		for (int numero : numeros) {
			if (numero % 2 == 0) {
				pares++;
			} else {
				impares++;
			}
		}
		
		switch (Integer.compare(pares, impares)) {
		case -1:
			return 1;
		case 1:
			return 2;
		default:
			return 0;
		}
	}

public static boolean hayDuplicados(int[] numeros) {
		int[] ordenado=numeros.clone();
		Arrays.sort(ordenado);
		// { 1, 2, 3, 4, 6,5,1 }->{1,1,2,3,4,5,6}
		for(int i=0;i<ordenado.length-1;i++) {
			if (ordenado[i]==ordenado[i+1]) {
				return true;
			}
		}
		return false;
	}
	
	// Sin ordenar la receta es lo que haría yo
	public static boolean hayDuplicadosSin(int[] numeros) {
		for(int i=0;i<numeros.length;i++) {
			int numero=numeros[i];
			for(int j=i+1;j<numeros.length;j++) {
				if(numeros[j]==numero) {
					return true;
				}
			}
		}
		return false;
	}

Publicado por

Avatar del usuario

Juan Pablo Fuentes

Formador de programación y bases de datos