Devi arrivare solo fino al penultimo con il ciclo (cioè fino a size -1) perchè per ogni elemento accedi anche al successivo quindi se arrivi fino all'ultimo elemento fai il confronto con una locazione non valida (e sei anche fortunato che non ti crasha il programma), mi sembrava ovvio ma evidentemente no.Tieni conto che così stai considerando array con duplicati inclusi.