2016-08-13 3 views
0

Wenn mehr als zwei Subarrays vorhanden sind, müssen wir das Subarray zurückgeben, das eine geringere Länge hat.Finden Sie ein zusammenhängendes Subarray mit maximaler Summe so, dass die Länge des Subarrays kleiner als gleich k ist?

Es handelt sich nur um die Länge des Subarrays und seine Summe.

Ich weiß, dass dies in O (n^2) mit roher Gewalt gelöst werden kann, aber ich suche nach einem effizienten Weg, dies zu tun. Ich versuchte auch, dies in O (n) mit dem Gleitfenster-Konzept zu lösen, aber später erkannte ich, dass es in einigen Fällen fehlschlägt.

Wie kann dies effizient durchgeführt werden?

+0

Vielleicht bin ich der einzige Leser, der diese Hilfe benötigt (oder sie braucht es nicht zu beantworten), aber was ist die Eingabedatenstruktur? Eine Reihe von Zahlen? Was ist ein zusammenhängendes Subarray? – danh

+0

@danh Das Wort "zusammenhängend" bedeutet benachbart oder benachbart. Ein zusammenhängendes Subarray hat alle seine Elemente nebeneinander. Für ein Array von 10 Elementen bilden a [0], a [1], a [2] ein zusammenhängendes Subarray, a [0], a [2], a [4] dont –

Antwort

1

Ich würde vorschlagen, dass Sie sich Kadanes Algorithmus ansehen. Es findet ein zusammenhängendes Subarray mit der größten Summe aus einem gegebenen Array. Dies geschieht in O (n). Ihr Problem beschränkt die Länge auf "k". Sie müssen also einfach eine Überprüfung für die Länge < = k in Kadane machen.

Verwandte Themen