Jelly, 8 7 bytes
‘;ṀỤḢṬ+
Try it online! or verify all test cases.
How it works (outdated)
;E¡0ỤḢṬ+‘;ṀỤḢṬ+ Main link. Argument: A
‘ E¡ DoIncrement eall times,elements whereof eA.
is 1Ṁ if all elements of A areYield equalthe andmaximum 0of otherwiseA.
; 0 Concatenate both results. Note that the appended Appendmaximum 0will tobe the
minimum of the resulting array if and only if all elements of A are equal.
Ụ Grade up; yield the indices of the resulting array, sorted by their
corresponding values in that array.
Ḣ Head; extract the first index, which is the index of the first occurrence
of the minimum. For an array of equal elements, this will be the index
of the appended 0maximum.
Ṭ Untruth; for index i, yield an array of i-1 zeroes, followed by a 1.
+ Add this array to A, incrementing the minimum or appending a 1.