- 博客(1)
- 收藏
- 关注
原创 有一个排好序的数列,数列中只有一个数只出现1次,其余每个数均出现了两次,设计出一个算法,找出那个只出现了一次的数
按照一般思路,遍历整个数列,就可以找到那个单个的数,但此时的算法复杂度为O(n);因此,我们可以采用一种更加方便的思路,使用分治算法求解1.数列的长度一定为奇数,因此找数列的中位数,用该数分别和他前面一个数和后面一个数比较,若都不相同,则该数为所要找的单数2.若等于前面一个数,那么求该数左边和右边的剩余数列的长度,单数一定在长度为奇数的那半边,递归寻找3.若等于后面一个数,同样思路
2017-10-30 19:47:24
1216
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人