Introducción

1

Arrays y Strings para resolver algoritmos avanzados

2

Arrays y Strings en detalle

Dos Apuntadores

3

Patrón de Dos Apuntadores

4

Verifying Alien Dictionary: análisis del problema

5

Solución de Verifying Alien Dictionary

6

Playground: Verifying Alien Dictionary

7

Programando Verifying Alien Dictionary con JavaScript

8

Merge Two Sorted Lists: análisis del problema

9

Solución de Merge Two Sorted Lists

10

Playground: Merge Two Sorted Lists

11

Programando Merge Two Sorted Lists con Python

12

Container With Most Water: análisis del problema

13

Solución de Container With Most Water

14

Playground: Container with Most Water

15

Programando Container With Most Water con Java

16

Reto: Trapping Rain Water

17

Ejercicios recomendados de Dos Apuntadores

18

Ejercicios resueltos de Dos Apuntadores

Ventana Deslizante

19

Patrón de Ventana Deslizante

20

Longest Substring Without Repeating Characters: análisis del problema

21

Solución de Longest Substring Without Repeating Characters

22

Playground: Longest Substring Without Repeating Characters

23

Programando Longest Substring Without Repeating Characters con Python

24

Ejercicios recomendados de Ventana Deslizante

25

Ejercicios resueltos de Ventana Deslizante

Búsqueda Binaria

26

Algoritmo de Búsqueda Binaria

27

Search in Rotated Arrays: análisis del problema

28

Solución de Search in Rotated Arrays

29

Playground: Search in Rotated Arrays

30

Programando Search in Rotated Arrays

31

Search 2D Array Matrix: análisis del problema

32

Solución de Search 2D Array Matrix

33

Playground: Search 2D Array Matrix

34

Programando Search 2D Array Matrix

Próximos pasos

35

Toma el Curso Avanzado de Algoritmos: Estructuras de Datos Lineales

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
9 Hrs
59 Min
43 Seg

Ejercicios resueltos de Ventana Deslizante

25/35

Lectura

Espero que hayas solucionado o al menos hayas intentado solucionar los retos de la clase anterior. De ser así, aquí te comparto la manera en que los solucioné.
Recuerda que hay muchas formas de resolver un mismo problema, cuéntame qué te parecen estas soluciones, también revisa y aporta a las soluciones de otros Platzinautas. 👨‍🚀💚

...

Regístrate o inicia sesión para leer el resto del contenido.

Aportes 5

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Embarrada que la solución del ejercicio 3 no esté, me hubiera gustado ver como la profe manejaba esa k.

## 3. Subcadena más larga (reemplazo de `k` caracteres) ## ![](https://static.platzi.com/media/user_upload/maxLonLetters-bdb93baf-2cfc-4a67-bb55-cde44ff8fdb8.jpg)
Posible solución para el **problema número 3**: ```js def characterReplacement(s: str, k: int) -> int: c_frequency = [0]*26 longest_str_len =0 l = 0 for r in range(len(s)): indexR = indexOf(s[r]) c_frequency[indexR] += 1 cells_count = r - l + 1 if cells_count - max(c_frequency) <= k: longest_str_len = max(longest_str_len, cells_count) else: indexL = indexOf(s[l]) c_frequency[indexL] -= 1 l += 1 return longest_str_len def indexOf(letter: str) -> int: return ord(letter) - ord("A") ```

Solución en go para max consecutive ones

/*
	- Have two pointers start, end = 0
	- Move end to the right
	- Count the amount of 1 (ones)
	- Calc the max length (start - end + 1)
	- Calc the amount of flipped values (length - ones)
	- When the amount of fillped values > k (it means we have flipped k times some 0s)
	start a new loop that move the start pointer foward
	- If the new start value is 1, decrease number of 1s.
	- The inner loop ends, when we are able to flip 0 again; (length - ones > k); then continue with the
	max length calc and moving the right pointer
*/

func maxOneConsecutive(nums []int, k int) int {
	var start, end, max, ones int

	for end <= len(nums)-1 {
		if nums[end] == 1 {
			ones++
		}

		// length - ones = number of flipped 0
		// we continue with the calc until we find a range where
		// we are allow to flip again
		for (end-start+1)-ones > k {
			// We are going to move the left pointer to calc
			// new possible consecutives 1, so we found a one
			// we remove it from the ones liest
			if nums[start] == 1 {
				ones--
			}
			// move the left pointer
			start++
		}
		max = int(math.Max(float64(max), float64(end-start+1)))
		end++
	}
	return max
}