Descripción del título:
Le ofrece una variedad de eventos , donde eventos [i] = [startDayi, endDayi] , lo que significa que la reunión i comienza en startDayi y termina en endDayi .
Puede participar en la reunión i cualquier día d que satisfaga startDayi <= d <= endDayi .
Tenga en cuenta que solo puede participar en una reunión por día.
Devuelva el número máximo de reuniones a las que puede asistir.
Ingrese:
Entrada: eventos = [[1,2], [2,3], [3,4]]
Salida: 3
Explicación: Puedes participar en las tres reuniones.
Un plan para organizar una reunión se muestra arriba.
Participe en la primera reunión el primer día.
Participe en la segunda reunión del segundo día.
Participe en la tercera reunión del tercer día.
Ejemplo 1:
Entrada: eventos = [[1,2], [2,3], [3,4], [1,2]]
Salida : 4
Ideas:
Diseñe ideas ambiciosas, organice todos los datos según endDay de pequeño a grande, si endDay es el mismo, según startDay de pequeño a grande,
Luego, cree una matriz dinámica de días para registrar si ha participado en la reunión en un día determinado,
Recorra todas las reuniones y determine el día más temprano en que se puede programar cada reunión
Código:
clase de soluciones: DEF maxevents (self, Eventos: Listado [Lista [int]]) -> int: Eventos = la ordenados (Eventos, Key = lambda X: (X, X [0]) [1].) # por la última vez , La primera vez que se organizan dos elementos arr2 = [Falso] cuenta = 0 para i en rango (len (eventos)): para j en rango (eventos [i] [0], eventos [i] [1] +1 ) : while len (arr2) <= j: arr2.append (False) #Si la matriz de días no es lo suficientemente grande, aumente dinámicamente el tamaño de la matriz de días si arr2 [j] == False: #Determine si ya hay una reunión programada para el día j arr2 [j] = Recuento verdadero + = 1 recuento de retorno de descanso
Resultado del juicio: