Die Mindestanzahl der Niuke Top101 BM21 Rotationsarrays – JS-Implementierung

beschreiben

Es gibt ein nicht absteigendes Array der Länge n, z. B. [1,2,3,4,5]. Drehen Sie es, dh verschieben Sie die ersten paar Elemente eines Arrays an das Ende des Arrays, um ein gedrehtes Array zu werden , Beispielsweise wird es zu [3,4,5,1,2] oder [4,5,1,2,3]. Entschuldigen Sie, finden Sie bei einem solchen Rotationsarray den Mindestwert im Array.

Datenbereich: 1≤n≤10000, der Wert eines beliebigen Elements im Array: 0≤val≤10000

Anforderungen: Raumkomplexität: O(1), Zeitkomplexität: O(logn)

Beispiel 1

eingeben:

[3,4,5,1,2]

Rückgabewert:

1

Beispiel 2

eingeben:

[3.100.200,3]

Rückgabewert:

3

Idee: Meiner Meinung nach besteht dieses Thema darin, die Spitze des Arrays zu finden. Wie bei einem Berg müssen Sie nur die Spitze des Berges finden. Der Wert hinter der Spitze des Berges ist der Mindestwert. Wenn das Array um erhöht wird Am Anfang ist der Mindestwert der erste Wert.

Das Array wird in der Reihenfolge von links nach rechts durchsucht. Wenn die Elemente in absteigender Reihenfolge gefunden werden, d. h. das vorherige > das nächste, ist das kleinste Element das nächste. Element zuerst.

Vollständiger Code:

function minNumberInRotateArray(rotateArray)
{
    // write code here
    // 先找到这个顶峰
    let len=rotateArray.length;
    for(let i=0;i<len;i++) {
        if(rotateArray[i+1]<rotateArray[i]) {
            return rotateArray[i+1];
        }
    }
    // 如果一直都没找到则说明是一个递增数组,直接返回第一个即可
    return rotateArray[0];

}
module.exports = {
    minNumberInRotateArray : minNumberInRotateArray
};

 

Supongo que te gusta

Origin blog.csdn.net/qq_43781887/article/details/128215485
Recomendado
Clasificación