To pytanie powstało z dyskusji w komentarzach this answer.Jak wybrać wszystkie elementy z listy, które są nieczynne?
Po pierwsze, powiedzmy, że trudno jest określić, co jest poza zamówieniem. Biorąc pod uwagę przykład Pavela Shveda, na liście [1,5,10,2,3,4,5,6,7,8,9,10,11] możemy "wyraźnie" zobaczyć, że 5 i 10 (wskaźniki 1) i 2) są niesprawne. Ale naiwny algorytm, który po prostu sprawdza jakąś sortowaną listę niezmienników, nie wskazywałby na to.
sprawdzenie
a[i-1]<=a[i] for all 0<i<=N
dałoby element o indeksie 3 (czyli 2);sprawdzenie
a[j]<=a[i] for all 0<=i<=N and 0<=j<=i
dałoby wszystkie elementy w indeksach od 3 do 12;
Moje pytanie brzmi: czy można wymyślić algorytm rozwiązania tego problemu, który daje "poprawną odpowiedź" (tj. Wskaźniki 1 i 2)? Jeśli tak, to w jakim czasie i przy użyciu złożonej pamięci będzie działać?
+1 za wzięcie tego interesującego pytania z pierwotnego pytania wskazał na zupełnie nowe pytanie –