我正在尝试解决一个算法问题。我需要在一个数组中找到一个单独的整数。
例如: {1,1,5,5,5,3,2,2}
输出应该是3,因为那是唯一的单个整数。
到目前为止,我创建了一个算法,首先对数组进行排序,然后检查i-1和i+1元素是否相等,如果不相等,则意味着我已经找到了单独的整数。
问题在于:对于短输入,它工作得很好,但是对于长输入,我会接收超时错误(计算时间太长,因此我的答案未经验证)。
您能否给我任何改进算法的提示?
例如: {1,1,5,5,5,3,2,2}
输出应该是3,因为那是唯一的单个整数。
到目前为止,我创建了一个算法,首先对数组进行排序,然后检查i-1和i+1元素是否相等,如果不相等,则意味着我已经找到了单独的整数。
问题在于:对于短输入,它工作得很好,但是对于长输入,我会接收超时错误(计算时间太长,因此我的答案未经验证)。
您能否给我任何改进算法的提示?
static int lonelyinteger(int[] a) {
Arrays.sort(a);
if (a.length == 1)
return a[0];
for (int i = 0; i < a.length; ++i) {
if (i == 0) {
if (a[i + 1] != a[i])
return a[i];
} else if (i == a.length - 1) {
if (a[i] != a[i - 1])
return a[i];
} else {
if (a[i - 1] != a[i] && a[i + 1] != a[i])
return a[i];
}
}
return -1;
}