


Zählen Sie die Anzahl der Intervalle, die eine bestimmte Besprechungszeit überschneiden
Problemstellung
Wir haben ein zweidimensionales Array erhalten, das Start- und Endzeitpaare enthält, die ein 12-Stunden-Zeitintervall darstellen. Gleichzeitig erhalten wir auch einen String str, ausgedrückt im 12-Stunden-Format. Wir müssen die Gesamtzahl der Intervalle ermitteln, die die durch str dargestellte Zeit enthalten.
Beispiel Beispiel
Eintreten
arr[][2] = {{“12:02:AM”, “10:55:PM”}, {“12:51:AM”, “11:40:AM”}, {“01:30:AM”, “12:00:PM”}, {“11:57:PM”, “11:59:PM”}}, str = “2:30:AM”
Ausgabe
3
Erklärung
lautet:Erklärung
Die Zeit „2:30:AM“ überschneidet sich mit den vorherigen drei Zeitintervallen.
Eintreten
arr[][2] = {{“01:02:PM”, “10:55:PM”}, {“01:30:AM”, “11:00:AM”}}, str = “11:30:PM”
Ausgabe
0
Erklärung
lautet:Erklärung
Die Zeit „23:30:PM“ überschneidet sich mit keinem der im Array angegebenen Zeitintervalle.
Methode 1
Bei dieser Methode konvertieren wir die Zeit in das 24-Stunden-Format. Anschließend berechnen wir durch Vergleich die Gesamtzahl der Zeitintervalle, die die gegebene Zeit schneiden. Darüber hinaus verwenden wir die Methode substr(), um den Teilstring abzurufen, und die Methode stoi(), um den String in eine Ganzzahl umzuwandeln.
Algorithmus
Schritt 1 – Definieren Sie die Funktion „convertTime()“, um die Zeit in das 24-Stunden-Format zu konvertieren.
Schritt 1.1 − Verwenden Sie die Methode replace(), um den Doppelpunkt an der dritten Position durch eine leere Zeichenfolge zu ersetzen.
Schritt 1.2 − Holen Sie sich das erste und zweite Zeichen, das die Stunde darstellt, aus der angegebenen Zeichenfolge und konvertieren Sie es in Stunden, indem Sie die erste Zahl mit 10 plus der zweiten Zahl multiplizieren.
Schritt 1.3 – Initialisieren Sie die Variable „time_24“ auf Null.
Schritt 1.4 − Wir müssen zwei Situationen bewältigen, um die Zeit in das 24-Stunden-Format umzuwandeln. Der erste Fall ist morgens und der zweite Fall ist nachmittags.
Schritt 1.4.1 – Wenn das 5. Zeichen in der Zeichenfolge „A“ ist, dann ist die Uhrzeit AM. Wenn die Zeit AM ist und die Stunde gleich 12 ist, werden nur die Minuten aus der Zeichenfolge extrahiert, da wir 12:00 AM als die 00:00-Stunde betrachten. Andernfalls konvertieren Sie die Zeitzeichenfolge in einen ganzzahligen Wert.
Schritt 1.4.2 – Wenn das fünfte Zeichen in der Zeichenfolge „P“ ist, dann ist die Uhrzeit PM. Extrahieren Sie eine Zeitzeichenfolge und konvertieren Sie sie in eine Ganzzahl. Wenn die Stunde außerdem nicht gleich 12 ist, wird 1200 zur Variablen „time_24“ hinzugefügt.
Schritt 2 – Die Funktion „convertTime()“ gibt die Zeit im folgenden Format zurück.
12:00:AM = 0000
12:58:AM = 0059
11:32:AM = 1132
23:32 Uhr = 1200 + 1132 = 2332
16:56 Uhr = 1200 + 456 = 1656
Wenn das 5. Zeichen in der Zeichenfolge „A“ ist, ist die Uhrzeit AM. Wenn die Zeit AM ist und die Stunde gleich 12 ist, werden nur die Minuten aus der Zeichenfolge extrahiert, da wir 12:00 AM als die 00:00-Stunde betrachten. Andernfalls konvertieren Sie die Zeitzeichenfolge in einen ganzzahligen Wert.
Schritt 3 – Konvertieren Sie die angegebene Zeitzeichenfolge in das 24-Stunden-Format.
Schritt 4 – Verwenden Sie eine for-Schleife, um das Zeitintervall-Array zu durchlaufen und jede Zeitzeichenfolge in das 24-Stunden-Format zu konvertieren.
Schritt 5 – Überprüfen Sie in der Zwischenzeit weiter, ob die angegebene Zeitzeichenfolge zwischen dem aktuellen Intervall liegt. Wenn ja, erhöhen Sie die Anzahl von „res“ um 1.
Schritt 6 – Geben Sie den Wert der Variablen „res“ zurück.
Beispiel
wird übersetzt als:Beispiel
#include <bits/stdc++.h> using namespace std; // Function to convert the given time_24 in 24 hours format int convertTime(string str){ // Remove the colon from the string str.replace(2, 1, ""); // Stores the hour int char_h1 = (int)str[1] - '0'; int char_h2 = (int)str[0] - '0'; int hours = (char_h2 * 10 + char_h1 % 10); // variable to store the time in 24 hours format int time_24 = 0; // If the time is in "AM." if (str[5] == 'A'){ // If hours are equal to 12, then update it to 0 as 12 AM, and only minutes to time_24 if (hours == 12){ time_24 += stoi(str.substr(2, 2)); } else { // add hours and minutes to time_24 time_24 += stoi(str.substr(0, 4)); } } // If time is in "PM" else { // If hours is equal to 12, add time as it is to time_24 if (hours == 12){ time_24 += stoi(str.substr(0, 4)); } else { // add time to time_24 time_24 += stoi(str.substr(0, 4)); // add 1200 = 12 : 00 PM to time_24 to convert in 24 hours format. time_24 += 1200; } } return time_24; } // Function to find the total number of intervals that intersects with given meeting time_24 int totalIntersects(string arr[][2], int len, string str){ // to store the total number of intervals int res = 0; // convert the given time_24 in 24 hours format int convertedStr = convertTime(str); // Traverse the array for (int i = 0; i < len; i++){ // convert the starting time_24 of the current interval in 24-hour format int initial = convertTime(arr[i][0]); // convert the ending time_24 of the current interval in 24-hour format int end = convertTime(arr[i][1]); // If the given time_24 lies in the interval [initial, end], then increment res by 1 if ((initial <= convertedStr && convertedStr <= end) || (convertedStr >= end && convertedStr <= initial)) res++; } // Return res return res; } int main(){ string arr[][2] = {{"11:00:AM", "11:55:PM"}, {"12:19:AM", "9:30:AM"}, {"12:51:AM", "12:59:PM"}, {"6:57:AM", "7:50:PM"}}; string str = "12:54:AM"; int len = sizeof(arr) / sizeof(arr[0]); cout << "The total number of the interval that intersects with given meeting time_24 are - " << totalIntersects(arr, len, str) << endl; }
Ausgabe
The total number of the interval that intersects with given meeting time_24 are - 2
Zeitkomplexität – O(N), da wir über die Reihe von Zeitintervallen iterieren.
Raumkomplexität − O(1), weil wir keinen konstanten Raum verwenden.
Bei der Lösung des oben genannten Problems sollten sich Benutzer hauptsächlich auf die Konvertierung der Zeit in das 24-Stunden-Format konzentrieren und dann einfach den normalen Vergleich durchführen.
Das obige ist der detaillierte Inhalt vonZählen Sie die Anzahl der Intervalle, die eine bestimmte Besprechungszeit überschneiden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



C Sprachdatenstruktur: Die Datenrepräsentation des Baumes und des Diagramms ist eine hierarchische Datenstruktur, die aus Knoten besteht. Jeder Knoten enthält ein Datenelement und einen Zeiger auf seine untergeordneten Knoten. Der binäre Baum ist eine besondere Art von Baum. Jeder Knoten hat höchstens zwei Kinderknoten. Die Daten repräsentieren structTreenode {intdata; structTreenode*links; structTreenode*rechts;}; Die Operation erstellt einen Baumtraversalbaum (Vorbereitung, in Ordnung und späterer Reihenfolge) Suchbauminsertion-Knoten Lösches Knotendiagramm ist eine Sammlung von Datenstrukturen, wobei Elemente Scheitelpunkte sind, und sie können durch Kanten mit richtigen oder ungerechten Daten miteinander verbunden werden, die Nachbarn darstellen.

Artikel erörtert den effektiven Einsatz von RValue -Referenzen in C für Bewegungssemantik, perfekte Weiterleitung und Ressourcenmanagement, wobei Best Practices und Leistungsverbesserungen hervorgehoben werden. (159 Charaktere)

Die Wahrheit über Probleme mit der Dateibetrieb: Dateiöffnung fehlgeschlagen: unzureichende Berechtigungen, falsche Pfade und Datei besetzt. Das Schreiben von Daten fehlgeschlagen: Der Puffer ist voll, die Datei ist nicht beschreibbar und der Speicherplatz ist nicht ausreichend. Andere FAQs: Langsame Dateitraversal, falsche Textdateicodierung und Binärdatei -Leser -Fehler.

C 20 -Bereiche verbessern die Datenmanipulation mit Ausdruckskraft, Komposition und Effizienz. Sie vereinfachen komplexe Transformationen und integrieren sich in vorhandene Codebasen, um eine bessere Leistung und Wartbarkeit zu erhalten.

C -Sprachfunktionen sind die Grundlage für die Code -Modularisierung und das Programmaufbau. Sie bestehen aus Deklarationen (Funktionsüberschriften) und Definitionen (Funktionskörper). C Sprache verwendet standardmäßig Werte, um Parameter zu übergeben, aber externe Variablen können auch mit dem Adresspass geändert werden. Funktionen können oder haben keinen Rückgabewert, und der Rückgabewerttyp muss mit der Deklaration übereinstimmen. Die Benennung von Funktionen sollte klar und leicht zu verstehen sein und mit Kamel oder Unterstrich die Nomenklatur. Befolgen Sie das Prinzip der einzelnen Verantwortung und behalten Sie die Funktion ein, um die Wartbarkeit und die Lesbarkeit zu verbessern.

Die Berechnung von C35 ist im Wesentlichen kombinatorische Mathematik, die die Anzahl der aus 3 von 5 Elementen ausgewählten Kombinationen darstellt. Die Berechnungsformel lautet C53 = 5! / (3! * 2!), Was direkt durch Schleifen berechnet werden kann, um die Effizienz zu verbessern und Überlauf zu vermeiden. Darüber hinaus ist das Verständnis der Art von Kombinationen und Beherrschen effizienter Berechnungsmethoden von entscheidender Bedeutung, um viele Probleme in den Bereichen Wahrscheinlichkeitsstatistik, Kryptographie, Algorithmus -Design usw. zu lösen.

In dem Artikel wird der dynamische Versand in C, seine Leistungskosten und Optimierungsstrategien erörtert. Es unterstreicht Szenarien, in denen der dynamische Versand die Leistung beeinflusst, und vergleicht sie mit statischer Versand, wobei die Kompromisse zwischen Leistung und Betonung betont werden

In dem Artikel wird die Verwendung von Move Semantics in C erörtert, um die Leistung zu verbessern, indem unnötiges Kopieren vermieden wird. Es umfasst die Implementierung von Bewegungskonstruktoren und Zuordnungsbetreibern unter Verwendung von STD :: MOVE
