anillo de plantilla de la resolución de problemas anillo [Problema]

Generalmente se refiere al problema anillo tiene dos soluciones, la respuesta final es devolver dos de los mejores. Comunes son:

  • reloj de ángulo
  • La distancia entre la estación de autobuses

Las ideas generales de resolución de problemas son similares, a partir de estos puntos no está mal:

  • En primer lugar, encontrar la longitud total de la suma.
  • Después se determinó a continuación la solución visualmente sub.
  • Por último, mediante la comparación de sum - sublos subméritos de respuesta seleccionadas.
...
int sum = ?
int sub = ?
return chioce(sub-sub, sub);
...

Reloj ángulo C_01

Método A: Método de complementaria


Análisis de la complejidad

  • Complejidad de tiempo: la ( ) El () ,
  • Espacio de la complejidad: la ( ) El () ,

La distancia entre la estación de autobuses C_02

Con n estaciones en las rutas de autobús en el anillo, en la secuencia de 0 a n - 1 está numerado. Sabemos que la distancia entre cada par de parada de autobús adyacente, distancia [i] representa el número de estaciones y el número i es la distancia entre el (i + 1)% n estaciones.

Bus en el anillo puede viajar en la dirección de las agujas del reloj y en sentido contrario.

Los pasajeros que regresan al punto de partida para comenzar a partir de la distancia más corta entre el destino de destino.
Aquí Insertar imagen Descripción

输入:distance = [1,2,3,4], start = 0, destination = 3
输出:4
解释:公交站 03 之间的距离是 64,最小值是 4

Método A: Método de complementaria

Y el reloj ángulo de la búsqueda de la naturaleza a una clase de preguntas. Debido a que es un área circular dentro de la ruta más corta, por lo que debe ser un poco mirada "oportunista",

  • primero nos encontramos con la longitud total de la suma, y ​​la obtención de la distancia d a s dis.
  • Por último, comparar la suma dis-dis tamaño puede ser.
public int distanceBetweenBusStops(int[] distance, int start, int destination) {
  int s = Math.min(start, destination);
  int d = Math.max(start, destination);
  
  int sum = 0;
  for (int dis : distance)     
  	sum += dis;

  int dis = 0;
  for (int i = s; i < d; i++)  
  	dis += distance[i];
  
  return Math.min(sum-dis, dis);
}

Análisis de la complejidad

  • Complejidad de tiempo: la ( norte ) O (n) ,
  • Espacio de la complejidad: la ( 1 ) O (1) ,

A_04

Método uno:


Análisis de la complejidad

  • Complejidad de tiempo: la ( ) El () ,
  • Espacio de la complejidad: la ( ) El () ,

Publicados 495 artículos originales · ganado elogios 105 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/qq_43539599/article/details/104906533
Recomendado
Clasificación