LeetCode 136.Single Number
Description:
Given an array of integers, every element appears twice except for one. Find that single one.
分析:
首先给数组按从小到大排序,然后遍历该数组,判断相邻之间的数是否相等;
若不等,则把标记flag置为true,可用来判断single number在原数组的大小,从而确定其排序后的位置,同时记录下当前遍历到达位置,并退出循环;若相等,更新i为i+2,表示遍历直接跳过一个数,因为这个数已经和前一个数相等。
flag为真,表示single number不是最大的一个数,处于已排序的数组中间,nums[after+1]是可以遍历到的,此时再判断一下前后相邻数的大小即可得到结果;
flag为假,表示single number是最大的一个数,无法遍历到,返回该数即是结果。
代码如下:
1 |
|