public class Main {
static int unique(int[] a) {
int left = 0, right = a.length - 1;
while (left < right) {
int mid = (left + right) / 2;
boolean even = (mid % 2 == 0);
if (even) {
if (a[mid] == a[mid + 1]) left = mid + 2;
else right = mid;
} else {
if (a[mid] == a[mid - 1]) left = mid + 1;
else right = mid - 1;
}
}
return a[left];
}
public static void main
(String[] args
) { int[] nums = {1, 1, 4, 4, 7, 8, 8};
System.
out.
println(unique
(nums
)); }
}
cHVibGljIGNsYXNzIE1haW4gewoKICAgIHN0YXRpYyBpbnQgdW5pcXVlKGludFtdIGEpIHsKICAgICAgICBpbnQgbGVmdCA9IDAsIHJpZ2h0ID0gYS5sZW5ndGggLSAxOwoKICAgICAgICB3aGlsZSAobGVmdCA8IHJpZ2h0KSB7CiAgICAgICAgICAgIGludCBtaWQgPSAobGVmdCArIHJpZ2h0KSAvIDI7CiAgICAgICAgICAgIGJvb2xlYW4gZXZlbiA9IChtaWQgJSAyID09IDApOwoKICAgICAgICAgICAgaWYgKGV2ZW4pIHsKICAgICAgICAgICAgICAgIGlmIChhW21pZF0gPT0gYVttaWQgKyAxXSkgbGVmdCA9IG1pZCArIDI7CiAgICAgICAgICAgICAgICBlbHNlIHJpZ2h0ID0gbWlkOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGFbbWlkXSA9PSBhW21pZCAtIDFdKSBsZWZ0ID0gbWlkICsgMTsKICAgICAgICAgICAgICAgIGVsc2UgcmlnaHQgPSBtaWQgLSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYVtsZWZ0XTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgaW50W10gbnVtcyA9IHsxLCAxLCA0LCA0LCA3LCA4LCA4fTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odW5pcXVlKG51bXMpKTsKICAgIH0KfQo=