Quiero encontrar la última ocurrencia de x(13) en la matriz que es 6, pero mi código solo encuentra las primeras ocurrencias, que es 4, ¿hay alguna manera de resolver esto?
/* Application Program */ int[] arr = {9, 12, 2, 8, 13, -8, 13, 9}; int index = lastIndexOf(arr, 13); if(index != -1) System.out.println(index); else System.out.println("not found"); /* Method */ public static int lastIndexOf(int[] arr, int x){ for(int i = 0; i<arr.length; i++){ if(arr[i] == x){ return i; } } return -1; }Iterar la matriz hacia atrás. Me gusta,
public static int lastIndexOf(int[] arr, int x) { for (int i = arr.length - 1; i >= 0; i--) { if (arr[i] == x) { return i; } } return -1; }Si está escaneando desde el primer elemento hasta el último elemento, debe almacenar el resultado en una variable.
public static int lastIndexOf(int[] arr, int x) { int resultIndex = -1; for(int i = 0; i < arr.length; i++) if(arr[i] == x) resultIndex = i; return resultIndex; }Si está escaneando desde el último elemento hasta el primero, puede devolver el resultado directamente desde el método.
public static int lastIndexOf(int[] arr, int x) { for(int i = arr.length - 1 ; i >= 0; --i) if(arr[i] == x) return i; return -1; }desea encontrar la última aparición de 13 pero está devolviendo el índice en la primera coincidencia.
public static int lastIndexOf(int[] arr, int x){ for(int i = 0; i<arr.length; i++){ if(arr[i] == x){ return i; } } return -1; }Para devolver la última aparición, puede modificar el código y devolver el índice más reciente.
public static int lastIndexOf(int[] arr, int x){ int lastIndex = -1 for(int i = 0; i<arr.length; i++){ if(arr[i] == x){ lastIndex = i; } } return lastIndex; }Using java Map based approach. public static int lastIndexOfV1(int[] arr, int x) { Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < arr.length; i++) { map.put(arr[i], i); } return map.get(x); }