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.s
s
Wenn beispielsweise s = "dcce"
, dann kommt er zweimal vor, f(s) = 2
da 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)
W
words
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