1 00:00:00,000 --> 00:00:04,600 Ya, pues a ver, seguimos, vale, ya hemos leído nuestro array, 2 00:00:04,600 --> 00:00:10,000 está relleno, con números positivos, el cero al final, 3 00:00:10,000 --> 00:00:15,000 ahora es cuando hay que operar para ver cuál es el número 4 00:00:15,000 --> 00:00:17,400 que más veces cumple algo. 5 00:00:17,400 --> 00:00:22,800 Entonces, uno le es enunciado, dice, ah, vale, 6 00:00:22,800 --> 00:00:28,000 tengo que recorrer todo el array para ver qué número cumple 7 00:00:28,000 --> 00:00:31,200 de todos los que hay, ser máximo en algo. 8 00:00:31,200 --> 00:00:32,800 ¿Máximo en qué? 9 00:00:32,800 --> 00:00:35,000 ¿Máximo en valor absoluto? 10 00:00:35,000 --> 00:00:37,400 No, ¿máximo en qué? 11 00:00:37,400 --> 00:00:40,400 Máximo en veces que aparecen en el array, 12 00:00:40,400 --> 00:00:43,600 pero en cualquier caso es recorrer un array para ver cuál es 13 00:00:43,600 --> 00:00:45,800 el que cumple ser máximo en algo. 14 00:00:46,000 --> 00:00:48,000 Pero eso es lo que, ¿eh? 15 00:00:53,000 --> 00:00:58,000 No, no, no, no, no, no, no, no, no, 16 00:00:58,000 --> 00:00:59,800 porque esto es una cosa muy específica, 17 00:00:59,800 --> 00:01:02,000 que es ver cuántas veces aparece un número en un array, 18 00:01:02,000 --> 00:01:06,600 eso es muy específico, no, para esto no hay una, 19 00:01:06,600 --> 00:01:09,800 claro, no puede haber códigos para cualquier necesidad tuya, 20 00:01:09,800 --> 00:01:12,400 claro, o sea, para agrandar un array es que es una necesidad 21 00:01:12,400 --> 00:01:13,400 básica, ¿qué es? 22 00:01:13,400 --> 00:01:14,400 Si yo tengo muchos datos... 23 00:01:14,400 --> 00:01:17,400 Para que no te invitas valores que ya están, 24 00:01:17,400 --> 00:01:20,400 incluso si la... 25 00:01:20,400 --> 00:01:23,400 Bueno, pero me hablas del ArrayList, por ejemplo. 26 00:01:23,400 --> 00:01:28,000 Ah, bueno, sí, bueno, pero es que el hashtag es un conjunto, 27 00:01:28,000 --> 00:01:30,800 entonces de partida por definición no admite valores 28 00:01:30,800 --> 00:01:36,000 republicados, pero bueno, eso lo veremos en colecciones, ¿vale? 29 00:01:36,000 --> 00:01:41,400 Nada, tú tranquilo, cuando veamos las colecciones, 30 00:01:41,400 --> 00:01:43,400 cada una tiene un ámbito de aplicación, 31 00:01:43,400 --> 00:01:45,400 una cosa son los sets, que son los conjuntos, 32 00:01:45,400 --> 00:01:47,400 otra cosa son los lists, cada uno tiene su ámbito 33 00:01:47,400 --> 00:01:49,400 en el que decidimos usarlo y cada uno te ofrece 34 00:01:49,400 --> 00:01:53,400 una serie de funcionalidades que interesa en ese ámbito, ¿vale? 35 00:01:53,400 --> 00:01:59,400 Pero eso no te preocupes que ya, ya llegará, ¿vale? 36 00:01:59,400 --> 00:02:02,400 Bueno, aquí tenemos una tarea muy específica por hacer, 37 00:02:02,400 --> 00:02:06,400 que es recorrer el array numerito por numerito 38 00:02:06,400 --> 00:02:10,400 y cada uno de ellos contar cuántas veces aparece, 39 00:02:10,400 --> 00:02:17,400 si supera al máximo los cuatro de atrás, 40 00:02:17,400 --> 00:02:22,400 de verdad, ¿eh? 41 00:02:22,400 --> 00:02:25,400 Bueno, pues entonces, aquí lo importante es que uno identifique 42 00:02:25,400 --> 00:02:30,400 que lo que tiene que hacer es calcular el máximo de algo, ¿vale? 43 00:02:30,400 --> 00:02:33,400 Ah, vale, pues el máximo de algo ya sabemos cómo hacerlo, 44 00:02:33,400 --> 00:02:35,400 hemos visto el algoritmo para hacerlo, ¿qué es? 45 00:02:35,400 --> 00:02:37,400 Yo tengo un conjunto de valores, asumo que el primero 46 00:02:37,400 --> 00:02:41,400 es el máximo de todos, empiezo a recorrer los demás, 47 00:02:41,400 --> 00:02:44,400 este supera a este, tengo nuevo máximo, sigo avanzando, 48 00:02:44,400 --> 00:02:47,400 este supera a este, pues no tengo nuevo máximo, 49 00:02:47,400 --> 00:02:50,400 este supera al que era máximo, tengo nuevo máximo, 50 00:02:50,400 --> 00:02:53,400 esa es la forma de operar, ¿no?, para hacer el máximo de algo, 51 00:02:53,400 --> 00:02:57,400 es la que clavamos, la que dijimos, recorro todos mis valores, 52 00:02:57,400 --> 00:03:00,400 cada uno de ellos supera al que es máximo hasta ese momento, 53 00:03:00,400 --> 00:03:04,400 actualizo el máximo y ya está, cuando he terminado de recorrer, 54 00:03:04,400 --> 00:03:07,400 tendré al final el que ha sido máximo de todos, 55 00:03:07,400 --> 00:03:10,400 pues es plantar eso, pero adaptarlo a que ahora 56 00:03:10,400 --> 00:03:13,400 la condición de ser máximo es aparecer más veces, 57 00:03:13,400 --> 00:03:16,400 lo voy a tener que contar, lo voy a tener que contar. 58 00:03:16,400 --> 00:03:23,400 Venga, vamos a ver, a ver, el resultado va a ser un numerito 59 00:03:23,400 --> 00:03:31,400 que es el que más veces aparece, más veces aparece, vale, 60 00:03:31,400 --> 00:03:36,400 ese es mi resultado final, mi resultado final el que más veces aparece, 61 00:03:36,400 --> 00:03:41,400 inicialmente, inicialmente vamos a inicializarlo al primero de todos ellos, 62 00:03:41,400 --> 00:03:47,400 al primero de todos, que es números de cero, vale, 63 00:03:47,400 --> 00:03:50,400 ese inicialmente es el que más veces aparece, 64 00:03:50,400 --> 00:03:54,400 y ahora empezamos a recorrer todos los demás, 65 00:03:54,400 --> 00:03:57,400 el segundo aparece más veces que el primero, 66 00:03:57,400 --> 00:03:59,400 actualizo el número cuando desaparece y así, 67 00:03:59,400 --> 00:04:02,400 pero claro, nos va a faltar contar, ahora lo veremos, 68 00:04:02,400 --> 00:04:08,400 pues venga, recorremos el array, parto ya no del primero, del cero, 69 00:04:08,400 --> 00:04:11,400 parto del siguiente, del uno, desde i igual a uno, 70 00:04:11,400 --> 00:04:21,400 mientras i sea menor que números.length, incrementando i, 71 00:04:21,400 --> 00:04:24,400 vale, pues que tenemos que ver, 72 00:04:24,400 --> 00:04:30,400 números de i aparece más veces que este, 73 00:04:30,400 --> 00:04:35,400 claro, pero aparece más veces no es una condición que yo pueda plantar tal cual, 74 00:04:35,400 --> 00:04:38,400 voy a tener que contar, voy a tener que contar, 75 00:04:38,400 --> 00:04:50,400 pues venga, vamos a ver, contamos cuántas veces aparece números de i, 76 00:04:50,400 --> 00:04:54,400 vamos a contar cuántas veces aparece números de i, 77 00:04:54,400 --> 00:04:58,400 a ver cuándo desaparece, para contarlo de siempre, 78 00:04:58,400 --> 00:05:03,400 un contador, vamos a contar cuántas veces aparece números de i, 79 00:05:03,400 --> 00:05:07,400 pues para contarlo tendremos que recorrer el array, enterito, 80 00:05:07,400 --> 00:05:23,400 a ver qué hago yo, j sea menor que números.length, incrementando j, 81 00:05:23,400 --> 00:05:28,400 pues vamos a ver si números de i, que es el que estoy contando, 82 00:05:28,400 --> 00:05:31,400 el que estoy contando cuántas veces aparece, 83 00:05:31,400 --> 00:05:37,400 números de i es igual que números de j, 84 00:05:37,400 --> 00:05:50,400 ala, contado, vale, pues este código me cuenta cuántas veces aparece este número, 85 00:05:50,400 --> 00:05:58,400 números de i en el array, sí o no, me lo cuentas sí o no, 86 00:05:58,400 --> 00:06:05,400 eh, Andoni, de verdad, me voy a liar, no sé si a poneros patas cuando tengáis 3 años, 87 00:06:05,400 --> 00:06:08,400 a expulsaros, a daros patadas, a todo lo que haga falta, 88 00:06:08,400 --> 00:06:11,400 me voy a quedar muy a gusto y muy tranquila, 89 00:06:11,400 --> 00:06:14,400 y con suerte a lo mejor aprendéis, 90 00:06:14,400 --> 00:06:18,400 de repente daros cuenta de que estáis en un ciclo superior, 91 00:06:18,400 --> 00:06:23,400 no en perto de la eso, bueno, este código, 92 00:06:23,400 --> 00:06:30,400 este código veis que está contando cuántas veces aparece este numerito en el array, 93 00:06:30,400 --> 00:06:35,400 lo va recorriendo enterito y cada aparición que sea igual que números de i la cuenta, 94 00:06:35,400 --> 00:06:42,400 ¿no?, vale, pues entonces, ahora qué pasa, 95 00:06:42,400 --> 00:06:45,400 pues si el número de veces que aparece números de i, 96 00:06:45,400 --> 00:06:50,400 es mayor que el número de veces que aparece el que más veces aparece, 97 00:06:50,400 --> 00:06:52,400 ah, claro, pero es que ese no lo tengo contado, 98 00:06:52,400 --> 00:06:55,400 ese no lo tengo contado para compararlo, 99 00:06:55,400 --> 00:07:10,400 tendría que contarlo, vale, pues vamos a contarlo aquí primero, 100 00:07:10,400 --> 00:07:14,400 y ya con esto casi se termina ya el código, 101 00:07:14,400 --> 00:07:21,400 vamos a contarlo, 102 00:07:21,400 --> 00:07:24,400 puedo reutilizar el i porque es otro for, 103 00:07:25,400 --> 00:07:33,400 sea menor que números de len, incrementando i, 104 00:07:33,400 --> 00:07:42,400 si números de cero es igual a números de i, 105 00:07:42,400 --> 00:07:51,400 este más más, 106 00:07:51,400 --> 00:07:54,400 este es las veces que aparece este primero, 107 00:07:54,400 --> 00:07:56,400 que es mi valor de partida, 108 00:07:56,400 --> 00:07:59,400 o sea, mi valor de partida es que el que más veces aparece es este, 109 00:07:59,400 --> 00:08:01,400 y aparece estas veces, 110 00:08:01,400 --> 00:08:05,400 este es el que más veces aparece y aparece estas veces, 111 00:08:05,400 --> 00:08:07,400 ahora sigo con el resto del array, 112 00:08:07,400 --> 00:08:10,400 en cuanto encuentre uno que aparece más veces que él, 113 00:08:10,400 --> 00:08:12,400 ala, pisa el anterior, y ya está, 114 00:08:12,400 --> 00:08:14,400 pues es lo que estamos haciendo, 115 00:08:14,400 --> 00:08:16,400 recorremos el resto del array, 116 00:08:16,400 --> 00:08:18,400 contamos las veces que aparece, 117 00:08:18,400 --> 00:08:26,400 en cuanto aparezca más veces que este, 118 00:08:26,400 --> 00:08:31,400 ala, a sustituir, 119 00:08:31,400 --> 00:08:33,400 a sustituir los dos valores, 120 00:08:33,400 --> 00:08:45,400 este será igual a números de i, 121 00:08:45,400 --> 00:08:49,400 y ya puedo sustituir también esto, 122 00:08:49,400 --> 00:08:52,400 para no tener que volverlo a contar otra vez, 123 00:08:52,400 --> 00:09:01,400 sustituyo ahí, 124 00:09:01,400 --> 00:09:05,400 y ya está, y se acabó, 125 00:09:05,400 --> 00:09:07,400 vale, o sea, esto no es fácil, 126 00:09:07,400 --> 00:09:12,400 no es, a ver si poniéndolo un poquito más pequeño 127 00:09:12,400 --> 00:09:15,400 para que quepa más ahí, 128 00:09:15,400 --> 00:09:17,400 no es fácil, 129 00:09:17,400 --> 00:09:19,400 pero bueno, si lo entendéis, 130 00:09:19,400 --> 00:09:21,400 los que no lo hayáis hecho, 131 00:09:21,400 --> 00:09:23,400 ya es suficiente, 132 00:09:23,400 --> 00:09:26,400 entonces aquí primero es identificar, 133 00:09:26,400 --> 00:09:28,400 identificar en mi ejercicio, 134 00:09:28,400 --> 00:09:30,400 que lo que tengo que hacer es ver de un conjunto de valores 135 00:09:30,400 --> 00:09:33,400 cuál es el máximo en algo, 136 00:09:33,400 --> 00:09:36,400 el máximo en lo que sea, en algo, 137 00:09:36,400 --> 00:09:38,400 bueno, pues entonces, 138 00:09:38,400 --> 00:09:40,400 ¿en qué tiene que ser máximo? 139 00:09:40,400 --> 00:09:42,400 en las veces que aparece, 140 00:09:42,400 --> 00:09:45,400 pues de partida asumo que el que es máximo 141 00:09:45,400 --> 00:09:47,400 es el primero de todos, 142 00:09:47,400 --> 00:09:49,400 y las veces que aparece son esas, 143 00:09:49,400 --> 00:09:51,400 que las acabo de contar ahí, 144 00:09:51,400 --> 00:09:53,400 las acabo de contar aquí, 145 00:09:53,400 --> 00:09:55,400 porque este bucle para contar las veces que aparece 146 00:09:55,400 --> 00:09:57,400 está claro, recorro todo el array, 147 00:09:57,400 --> 00:09:59,400 cada vez que encuentro uno en el array 148 00:09:59,400 --> 00:10:01,400 que es igual que este, le cuento, 149 00:10:01,400 --> 00:10:03,400 bueno, pues asumo que el primero 150 00:10:03,400 --> 00:10:06,400 es de partida el que más veces aparece 151 00:10:06,400 --> 00:10:08,400 y cuando desaparece, 152 00:10:08,400 --> 00:10:10,400 pues lo cuento aquí, 153 00:10:10,400 --> 00:10:13,400 y ahora ya empiezo a recorrer el resto del array, 154 00:10:13,400 --> 00:10:16,400 para cada posición del resto del array, 155 00:10:16,400 --> 00:10:18,400 desde la 1 a la 2, 156 00:10:18,400 --> 00:10:20,400 cuento cuántas veces aparece, 157 00:10:20,400 --> 00:10:23,400 si supera al que era máximo hasta ese momento, 158 00:10:23,400 --> 00:10:25,400 si lo supera, actualizo el máximo, 159 00:10:25,400 --> 00:10:27,400 el nuevo máximo es este, 160 00:10:27,400 --> 00:10:29,400 números de y que estoy mirando, 161 00:10:29,400 --> 00:10:31,400 y las veces que aparece es esta, 162 00:10:31,400 --> 00:10:33,400 imprescindible actualizar esto, 163 00:10:33,400 --> 00:10:35,400 porque luego cuando vayamos al siguiente, 164 00:10:35,400 --> 00:10:37,400 hay que volver a evaluar esta condición, 165 00:10:37,400 --> 00:10:39,400 volver a evaluarla, 166 00:10:39,400 --> 00:10:41,400 entonces cuando encuentro un nuevo máximo, 167 00:10:41,400 --> 00:10:43,400 tengo que actualizar ese valor, 168 00:10:43,400 --> 00:10:45,400 más las veces que aparece él, 169 00:10:45,400 --> 00:10:47,400 más las veces que aparece él, 170 00:10:47,400 --> 00:10:49,400 para que luego el siguiente pueda yo comparar 171 00:10:49,400 --> 00:10:51,400 las veces que aparece el siguiente 172 00:10:51,400 --> 00:10:54,400 con las que aparece el máximo hasta ese momento, 173 00:10:56,400 --> 00:10:58,400 y cuando ya este for ha terminado, 174 00:10:58,400 --> 00:11:00,400 que termina aquí, ya está, 175 00:11:00,400 --> 00:11:02,400 lo que más veces aparece que es, 176 00:11:02,400 --> 00:11:04,400 que está guardado en mi variable, 177 00:11:07,400 --> 00:11:10,400 el valor que más aparece es, 178 00:11:12,400 --> 00:11:14,400 este, 179 00:11:24,400 --> 00:11:26,400 y ya está terminado, 180 00:11:27,400 --> 00:11:32,400 entonces es hacer el algoritmo de máximo, 181 00:11:32,400 --> 00:11:34,400 pero lo que había que cambiar es, 182 00:11:34,400 --> 00:11:37,400 que la condición para ver si alguien es máximo, 183 00:11:37,400 --> 00:11:39,400 la condición no es que el número de y 184 00:11:39,400 --> 00:11:41,400 sea mayor que el máximo, 185 00:11:41,400 --> 00:11:43,400 o sea la condición de ser máximo 186 00:11:43,400 --> 00:11:45,400 no es ser mayor en valor absoluto, 187 00:11:45,400 --> 00:11:47,400 sino la condición de ser máximo 188 00:11:47,400 --> 00:11:49,400 implicaba contar, 189 00:11:51,400 --> 00:11:53,400 ¿vale? 190 00:11:57,400 --> 00:12:01,400 Bueno, ¿entendido lo que hemos hecho en ese ejercicio? 191 00:12:03,400 --> 00:12:05,400 Ahora, bueno, puede ser que al probarlo 192 00:12:05,400 --> 00:12:07,400 salgan mil errores, porque se nos han escapado 193 00:12:07,400 --> 00:12:10,400 i's, j's, array, index, bound, exception, etc. 194 00:12:10,400 --> 00:12:12,400 Vamos a hacerlo, 195 00:12:12,400 --> 00:12:15,400 porque se nos puede haber escapado de todo, 196 00:12:16,400 --> 00:12:18,400 a ver, 197 00:12:18,400 --> 00:12:20,400 y luego ya veremos, 198 00:12:22,400 --> 00:12:24,400 venga, 6, 199 00:12:24,400 --> 00:12:26,400 venga, 6, 200 00:12:26,400 --> 00:12:28,400 7, 201 00:12:28,400 --> 00:12:30,400 7, 202 00:12:31,400 --> 00:12:32,400 6, 203 00:12:32,400 --> 00:12:34,400 7, 204 00:12:34,400 --> 00:12:35,400 y 0, 205 00:12:35,400 --> 00:12:37,400 entonces me va a tener que salir el 7, 206 00:12:37,400 --> 00:12:39,400 porque he metido 2 veces 6 y 3 veces 7, creo, ¿no? 207 00:12:39,400 --> 00:12:41,400 y 0, 208 00:12:42,400 --> 00:12:44,400 bueno, esa prueba la ha pasado, 209 00:12:44,400 --> 00:12:47,400 eso no significa que el programa esté bien, 210 00:12:49,400 --> 00:12:51,400 puede haber casos en los cuales 211 00:12:51,400 --> 00:12:53,400 no hayamos considerado, 212 00:12:53,400 --> 00:12:55,400 vamos a poner ahora que el que más veces aparece 213 00:12:55,400 --> 00:12:57,400 es el segundo que he metido, 214 00:12:57,400 --> 00:12:59,400 por ejemplo, 215 00:12:59,400 --> 00:13:01,400 8, 0, 216 00:13:01,400 --> 00:13:03,400 no he metido 8 al principio, ¿no? 217 00:13:03,400 --> 00:13:05,400 0, 218 00:13:05,400 --> 00:13:07,400 66, bueno, tiene toda la pinta de que funciona, 219 00:13:07,400 --> 00:13:09,400 pues ya son dos pruebas que pasa bien, 220 00:13:09,400 --> 00:13:11,400 que son casos diferentes, cuando el primero 221 00:13:11,400 --> 00:13:13,400 era el mayor, 222 00:13:13,400 --> 00:13:16,400 cuando era el segundo, es al que más veces me aparecía, 223 00:13:17,400 --> 00:13:21,400 vale, bueno, 224 00:13:21,400 --> 00:13:23,400 ahora os digo las notas, 225 00:13:23,400 --> 00:13:25,400 antes de eso, 226 00:13:25,400 --> 00:13:29,400 ¿alguna cosa que decir sobre el examen, 227 00:13:29,400 --> 00:13:31,400 comentario, algo? 228 00:13:37,400 --> 00:13:39,400 ¿este mío o el tuyo? 229 00:13:39,400 --> 00:13:41,400 ¿este mío o el tuyo? 230 00:13:43,400 --> 00:13:45,400 bueno, pues voy a probar yo los casos 231 00:13:45,400 --> 00:13:47,400 en los que no te sale a ti, 232 00:13:47,400 --> 00:13:49,400 ¿con qué prueba has hecho? 233 00:13:51,400 --> 00:13:53,400 ¿grande o aquella más grande? 234 00:13:55,400 --> 00:13:57,400 ¿cuando metes números de 3 cifras o 4? 235 00:13:57,400 --> 00:13:59,400 por ejemplo, 236 00:13:59,400 --> 00:14:01,400 este... 237 00:14:03,400 --> 00:14:05,400 ¿cómo muchos? 238 00:14:05,400 --> 00:14:07,400 7, 10 239 00:14:07,400 --> 00:14:09,400 ¿cifras? 240 00:14:09,400 --> 00:14:11,400 no, números 241 00:14:11,400 --> 00:14:13,400 uf, me voy a tener que meter números 242 00:14:16,400 --> 00:14:18,400 no sé cuántos llevo ya, 243 00:14:18,400 --> 00:14:20,400 pero por ahora solo he repetido el 777, ¿no? 244 00:14:26,400 --> 00:14:28,400 ¿ya? ¿suficiente? 245 00:14:29,400 --> 00:14:31,400 ¿ahora puedo meter un 0? ¿cuál repito? 246 00:14:31,400 --> 00:14:33,400 repite F 247 00:14:33,400 --> 00:14:35,400 5, 4, 3, 2 248 00:14:35,400 --> 00:14:37,400 5, 4, 3, 2 249 00:14:37,400 --> 00:14:39,400 y lo repito otra vez 250 00:14:39,400 --> 00:14:41,400 5, 4, 3, 2 251 00:14:41,400 --> 00:14:43,400 con lo cual tiene que ganar este obligatoriamente 252 00:14:43,400 --> 00:14:45,400 ¿no? y ahora pongo un 0 253 00:14:49,400 --> 00:14:51,400 pues no sé, 254 00:14:51,400 --> 00:14:53,400 algo habrás copiado, raro 255 00:14:53,400 --> 00:14:55,400 vale, ¿alguna otra cosa rara? 256 00:14:57,400 --> 00:14:59,400 bueno