A continuación, hackerearth qn se ha preguntado en uno de los qns de codificación
Más lejos de cero
Se le da una matriz de enteros A de tamaño N.
Tarea Escriba un programa para imprimir el elemento más alejado de 0. Si hay varios elementos, imprima el número con el menor valor.
Formato de entrada
Formato de salida
Imprime el elemento más alejado de 0.
Ejemplo de entrada 1
5
1 2 3 4 5
Salida de muestra1
5
Solución preparada por mí:
public static farthestfromzero(int N, int [] Arr) { TreeSet<Integer> ts = new TreeSet<Integer>(); for (int i=0; i<N; i++){ ts.add(Arr[i]); } return ts.last(); }Pregunte : esta solución funcionó para mí en el escenario inicial, pero cuando la envié, no funcionó.
Su algoritmo no tiene en cuenta los enteros negativos.
Considere esta matriz:
[-10, 7, 5, 1]
¿Qué número está más alejado de cero?
¿Cuál elegirá su algoritmo?
También tenga en cuenta, este requisito:
Si hay varios elementos, imprima el número con el menor valor.
Entonces, de una matriz como esta:
[-10, 1, 2 ,10]
Debe elegir -10, y no 10.
Esto se debe a que el conjunto de árboles está ordenado por los valores, el número puede ser positivo. Así que... creo que debería ser esto:
public static int farthestfromzero(int N, int [] Arr) { TreeSet<Integer> ts = new TreeSet<Integer>(); for (int i=0; i<N; i++){ ts.add(Arr[i]); } int maxV = ts.last(); int minV = ts.first(); if(Math.abs(minV) >= maxV){ return minV; } return maxV; }Además, si se excede la memoria, intente esto:
public static int farthestfromzero(int N, int [] Arr) {//You don't really need to store every elements int best = 0; for(int i = 0;i<N;i++) { if(Math.abs(Arr[i]) > Math.abs(best)) { best = Arr[i]; }else if(Math.abs(best) == Math.abs(Arr[i]) && best > Arr[i]) { best = Arr[i]; } } return best; }Aquí está mi respuesta. Acabo de escribir la lógica central. Agregue la verificación de condición básica. Además, lo hice en Python3. Código comentado la expansión del siguiente código de una sola línea.
A1 = sorted(A) print(A1[0]) if (abs(A1[0])> abs(A1[-1])) else print(A1[-1]) if (abs(A1[0]) < abs(A1[-1])) else print(A1[0]) # if (abs(A1[0])== abs(A1[-1])): # print(A1[0]) # else: # if(abs(A1[0]) > abs(A1[-1])): # print(A1[0]) # else: # print(A1[-1])