Arbeiten Sie mit AI Brush Leetcode zusammen, um 1170 zu erreichen

Die Themen sind wie folgt:

1170. Vergleichen Sie die Häufigkeit des Auftretens des kleinsten Buchstabens in einer Zeichenfolge

Mittlerer Schwierigkeitsgrad

75

Definieren Sie eine Funktion  , die das Vorkommen des kleinsten   Buchstabens (lexikografisch)f(s) zählt,   wobei   es sich um eine nicht leere Zeichenfolge handelt.ss

Wenn beispielsweise  s = "dcce", dann  kommt er zweimal vor, f(s) = 2da der lexikographisch kleinste Buchstabe ist  ."c"

Jetzt stehen Ihnen zwei String-Arrays zur Suche  queries und zum Vokabular  zur Verfügung words . queries[i] Zählen Sie  für jede Abfrage   die Anzahl der Wörter,words die  <   erfüllen f(queries[i]) und   jedes Wort im  Vokabular   darstellen .f(W)Wwords

Bitte geben Sie als Antwort ein Array von Ganzzahlen zurück  answer , die jeweils   das Ergebnis der zweiten Abfrage answer[i] sind  .i

Beispiel 1:

Eingabe: Abfragen = ["cbd"], Wörter = ["zaaaz"]
 Ausgabe: [1]
 Erläuterung: Abfrage f("cbd") = 1 und f("zaaaz") = 3 also f("cbd") < f("zaaaz").

Beispiel 2:

Eingabe: Abfragen = ["bbb", "cc"], Wörter = ["a", "aa", "aaa", "aaaa"] Ausgabe: [1,2] Erläuterung: Die erste Abfrage f
 ( "
 bbb " ) < f("aaaa"), die zweite Abfrage f("aaa") und f("aaaa") sind beide > f("cc").

Hinweis:

  • 1 <= queries.length <= 2000
  • 1 <= words.length <= 2000
  • 1 <= queries[i].length, words[i].length <= 10
  • queries[i][j], words[i][j] bestehen aus englischen Kleinbuchstaben

Besteht 20.206, verpflichtet 31.732

Da die künstliche Intelligenz immer stärker wird, ist der von der KI geschriebene Code besser als ich. Ich glaube, dass ein solches Thema von der KI in weniger als 5 Sekunden erledigt werden kann. Aber KI kann Ihr eigenes Denken nicht ersetzen. Wie kann man also KI kombinieren, um die Fragen zu lösen? Mein Plan ist: Ich kläre das Denken selbst, übergebe den Teil, der abgeschlossen werden soll, an die KI und vervollständige den kreativen Teil selbst.

Die Idee des Themas ist nicht schwierig. Implementieren Sie einfach eine Funktion f (s), implementieren Sie eine binäre Suche und durchlaufen Sie sie dann. Komplexität O(nlogn).

Schreiben Sie also Code wie diesen:

class Solution {
    fun f(s: String): Int {
        val counts = IntArray(26)
        for (c in s) {
            counts[c - 'a']++
        }
        for (i in 0 until 26) {
            if (counts[i] > 0) {
                return counts[i]
            }
        }
        return 0
    }

    fun countNumbersGreaterThanTarget(nums: IntArray, target: Int): Int {
        var left = 0
        var right = nums.size - 1
        var count = 0

        while (left <= right) {
            val mid = left + (right - left) / 2
            if (nums[mid] <= target) {
                left = mid + 1
            } else {
                count += right - mid + 1
                right = mid - 1
            }
        }

        return count
    }
    fun numSmallerByFrequency(queries: Array<String>, words: Array<String>): IntArray {
        var intArray = IntArray(words.size)
        for(i in 0..words.size-1){
            intArray[i]=f(words[i])
        }
        intArray.sort();
        var ans = IntArray(queries.size)
        for(i in 0..queries.size-1){
            var temp=f(queries[i])
            ans[i]=countNumbersGreaterThanTarget(intArray,temp)
        }
        return ans
    }
}

Ergebnisse der:

passieren

zeige Details

Ihr Code ist unbesiegbar!

Notizen hinzufügen

Ausführungszeit: 200 ms, schlagen Sie 100,00 % der Benutzer aller Kotlin-Einreichungen

Speicherverbrauch: 37,9 MB, übertrifft 0,00 % der Benutzer aller Kotlin-Commits

Bestandene Testfälle: 37/37

おすすめ

転載: blog.csdn.net/weixin_41579872/article/details/131139565