Nejprve je potřeba si rozmyslet, zda přidání dalšího prvku na konec posloupnosti ovlivní dosavadní posloupnosti:
Budu-li postupovat v posloupnosti od konce do začátku, mohu najít první číslo, jehož rozdíl s posledním číslem přesáhne toleranci (). Pro další výpočty pak mi stačí uvažovat pouze úsek napravo od tohoto čísla. Zároveň je však potřeba si uvědomit, že i předposlední číslo již vyhradilo jakýsi úsek, ve kterém má smysl zkoumat podposloupnosti - budu se tak zabývat kratším z těchto úseků.
Nyní vezmu následující situaci: mám posloupnost s finálním prvkem , pro nějž je zarážka na pozici .
Jelikož se jedná o první zarážku, celá posloupnost od do je platná a tuto posloupnost nelze rozšířit zleva ani zprava. Označím tak a , což znamená, že podposloupnost má délku .
Dále, mezi a nevznikla žádná zarážka, a tak mohu postup opakovat (jako bych opět počítal od nuly), dokud nevznikne další zarážka.
Vstup: posloupnost s prvky od do , hranice .
Algoritmus vlastně rozkouskuje interval na souvislé podposloupnosti, které již nejdou rozšířit. (nemusí být nutně disjunktní). Vybrat tu nejdelší nepředstavuje žádný problém.
Levá zarážka (inkluzivní) vzniká tehdy, kdy zkoumané číslo nelze odečíst od čísla před touto zarážkou - proto nelze posloupnost, ve které se nachází , rozšířit směrem doleva. Ze stejného důvodu se stává pravou zarážkou (již nepatřící do ní) - pro předchozí podposloupnost.
Pokud chci pouze nejdelší podposloupnost, pak mi stačí uchovávat si v paměti maximum a momentální podposloupnost, takže paměťové nároky budou konstantní. V opačném případě budu potřebovat lineární paměť na všechny zarážky.
Časová složitost závisí na tom, kolik budu mít zarážek. Nemám-li žádné, pak celá posloupnost je "v toleranci" a složitost tak bude kvadratická.
Nevznikne-li pro daný prvek zarážka, pak pro následující prvky budu porovnávat rozdíl přes naprosto stejné prvky. Toto bych si mohl ušetřit tím, že pro daný interval zjistím maximum a minimum a budu porovnávat jen rozdíl mezi maximem a minimem.
Vstup: posloupnost s prvky od do , hranice .
Paměťová složitost výše popsaného je , pokud již zaznamenávám maximum, pak .
Co se týče časové složitosti: Pouhé rozšíření posloupnosti (nový prvek se vleze do tolerance maxima i minima) má složitost O(1). V případě, že je potřeba posloupnost uzavřít, může být opět potřeba prohledat prvků, levá zarážka se posune o jeden prvek, a tak složitost v nejhorším případě by stále byla .