avrai qualcosa del genere in pseudo codice
codice:
massimiLocali(int prev, List l) {
  se l.tail = null (sei in cosa alla lista) -> l.head è max se prev < l.head
  altrimenti -> 
    l.head è max se (prev < l.head e l.head > l.tail.head
    massimiLocali(l.head, l.tail) //mi sposto di un elemento e ricomincio
}
alla prima chiamata come prev puoi passargli Integer.MIN_VALUE.