Inhaltsverzeichnis
Problemstellung
Beispiel Beispiel
Eintreten
Ausgabe
Erklärung
Methode 1
Algorithmus
Beispiel
Heim Backend-Entwicklung C++ Zählen Sie die Anzahl der Intervalle, die eine bestimmte Besprechungszeit überschneiden

Zählen Sie die Anzahl der Intervalle, die eine bestimmte Besprechungszeit überschneiden

Aug 31, 2023 pm 08:13 PM
会议时间相交区间数

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”
Nach dem Login kopieren

Ausgabe

3
Nach dem Login kopieren
Die chinesische Übersetzung von

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”
Nach dem Login kopieren

Ausgabe

0
Nach dem Login kopieren
Die chinesische Übersetzung von

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;
}
Nach dem Login kopieren

Ausgabe

The total number of the interval that intersects with given meeting time_24 are - 2
Nach dem Login kopieren
  • 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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

C Sprachdatenstruktur: Datenrepräsentation und Betrieb von Bäumen und Grafiken C Sprachdatenstruktur: Datenrepräsentation und Betrieb von Bäumen und Grafiken Apr 04, 2025 am 11:18 AM

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.

Wie verwende ich RValue -Referenzen effektiv in C? Wie verwende ich RValue -Referenzen effektiv in C? Mar 18, 2025 pm 03:29 PM

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 hinter dem Problem der C -Sprachdatei Die Wahrheit hinter dem Problem der C -Sprachdatei Apr 04, 2025 am 11:24 AM

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.

Wie verwende ich Bereiche in C 20 für ausdrucksstärkere Datenmanipulationen? Wie verwende ich Bereiche in C 20 für ausdrucksstärkere Datenmanipulationen? Mar 17, 2025 pm 12:58 PM

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.

Was sind die grundlegenden Anforderungen für C -Sprachfunktionen? Was sind die grundlegenden Anforderungen für C -Sprachfunktionen? Apr 03, 2025 pm 10:06 PM

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.

Berechnung des C-Subscript 3-Index 5 C-Subscript 3-Index 5-Algorithmus-Tutorial Berechnung des C-Subscript 3-Index 5 C-Subscript 3-Index 5-Algorithmus-Tutorial Apr 03, 2025 pm 10:33 PM

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.

Wie funktioniert der dynamische Versand in C und wie wirkt sich dies auf die Leistung aus? Wie funktioniert der dynamische Versand in C und wie wirkt sich dies auf die Leistung aus? Mar 17, 2025 pm 01:08 PM

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

Wie verwende ich die Semantik in C, um die Leistung zu verbessern? Wie verwende ich die Semantik in C, um die Leistung zu verbessern? Mar 18, 2025 pm 03:27 PM

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

See all articles