【Diario de preguntas de pincel】 17.11 Distancia entre palabras

¡Continúe creando, acelere el crecimiento! Este es el primer día de mi participación en el "Nuggets Daily New Plan · June Update Challenge", haz clic para ver los detalles del evento

El artículo 48 de este diario de cepillado se titula: 17.11 Distancia de palabra , media

1. Descripción del tema:

Ha pasado mucho tiempo, sigamos revisando las preguntas de hoy. Estuve ocupado recientemente. Descubrí que cuanto más ocupada está la gente, menos crecimiento tiene. Creo que es porque tengo menos tiempo para pensar profundamente en mí mismo y menos tiempo para hablar conmigo mismo.

Continúe repasando preguntas, ejercitando el pensamiento

2. ¿Qué idea examina esta pregunta? ¿Cuál es tu pensamiento?

Echemos un vistazo más de cerca a lo que nos dice este tema:

  • Necesitamos encontrar la distancia más cercana entre dos palabras en un grupo dado de palabras
  • Las dos palabras dadas se repetirán muchas veces en esta pila de palabras, y el número de repeticiones es aleatorio.

Entonces sabemos, en una multitud, ¿cuál es la distancia más cercana entre dos personas, una al lado de la otra, o es la más cercana cuando están una al lado de la otra?

Al igual que el grupo de palabras anterior, queremos aencontrar nicela distancia más cercana entre y dos palabras , encontraremos una manera de encontrar la distancia más pequeña cuando estas dos palabras son adyacentes en varias situaciones.

Entonces, puedo pensar en usar punteros dobles para solucionar este problema.

O lo que expresa la imagen de arriba

  • Definamos un p1 para representar la posición actual predeterminada de la palabra 1, -1 cuando se inicialice, y definamos un p2 para representar la posición actual predeterminada de la palabra 2
  • Recorra las palabras dadas, cuando la palabra actual sea consistente con la palabra 1, asigne la posición a p1
  • Del mismo modo, asigne la posición actual de word2 a p2
  • Cuando se comprueba que tanto p1 como p2 son mayores o iguales, se calcula la diferencia entre ellos hasta completar el recorrido de palabras, y se puede tomar el valor mínimo de todas las diferencias.

Pero aquí debemos prestar atención para inicializar p1, p2 La posición actual es -1 No hay necesidad de explicar demasiado aquí, pero necesitamos inicializar un número que sea relativamente grande y pueda especificarse como la longitud de las palabras

El propósito de esto es mantener la lógica clara, evitar errores de cálculo y garantizar que el valor mínimo obtenido debe ser el valor real cuando se compara el valor mínimo por primera vez.

3. Codificación

De acuerdo con la lógica y el análisis anteriores, podemos traducirlo al siguiente código

La codificación es la siguiente:

func findClosest(words []string, word1 string, word2 string) int {

    var p1,p2 = -1,-1

    // 此处需要注意定义 res 的时候,可以大一点,可以为整个 words 的长度,这是为了避免咱们在计算两个单词最小值的时候,计算出错

    var res = len(words)

    for index,w := range words {

        if w == word1 {
            p1 = index
        }

        if w == word2 {
            p2 = index
        }

        if p1 >=0 && p2 >= 0{
            res = min(help(p1,p2) , res)
        }
    }
    return res
}
func help (a,b int) int {
    if a > b{
        return a-b
    }
    return b-a
}
func min (a,b int) int {
    if a > b {
        return b
    }
    return a
}
复制代码

4. Resumen:

Aquí podemos ver que con esta implementación de doble puntero, solo recorremos la matriz de palabras una vez, por lo que nuestra complejidad de tiempo aquí es O(n)

La complejidad del espacio es relativamente clara y el consumo de espacio que introducimos es O(1)

Dirección del título original: Pregunta de la entrevista 17.11 Distancia entre palabras

Estoy aquí hoy, lo que he aprendido, si hay alguna desviación, corríjame

Bienvenido a me gusta, seguir, favorito

Amigos, su apoyo y aliento son la motivación para que yo persista en compartir y mejorar la calidad.

Bien, aquí está esta vez.

La tecnología es abierta, y nuestra mentalidad debe ser abierta. Acepta el cambio, vive bajo el sol y sigue adelante.

Soy el pequeño demonio Nezha , bienvenido a dar me gusta, seguir y coleccionar, hasta la próxima ~

Supongo que te gusta

Origin juejin.im/post/7102412502171910175
Recomendado
Clasificación