您的位置:首页 > 其它

LintCode 落单的数

2017-09-23 17:15 106 查看
1.描述

给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。

样例

给出 [1,2,2,1,3,4,3],返回 4

2.分析

数组中除了落单数之外都是两个相同的数成对出现,因此排序后相同的数都是挨着的,

从第一个数开始当找到一个数后面的数和他不同时该数即为落单数。

3.代码

class Solution {

public:

    /*

     * @param A: An integer array

     * @return: An integer

     */

    int singleNumber(vector<int> &A) {

        // write your code here

        sort(A.begin(),A.end());

        int n=A.size();

        for(int i=0;i<n;)

        {

            if(A[i]==A[i+1])

            i=i+2;

            else

            return A[i];

        }

    }

};

4.总结

对数组排序后相同的数已经挨在一起,注意当判断当前数后跟着的数相同时i+2找到下一个数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: