题解 | #数组中只出现一次的两个数字#

数组中只出现一次的两个数字

http://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * @param arr int整型vector 
     * @return int整型vector
     */
    vector<int> FindNumsAppearOnce(vector<int>& arr) {
        // write code here
        vector<int> vans;
        int iCount = 0; //计数器 终值2
        sort(arr.begin(),arr.end());  //排序后重复的元素相邻
        if(arr[0] != arr[1]) {   //判断第一个元素
            vans.emplace_back(arr[0]);
            iCount++;
        }
        for(int i = 1; i < arr.size()-1; i++) {
            if(arr[i-1]!=arr[i] && arr[i]!=arr[i+1]) {
                vans.emplace_back(arr[i]);
                iCount++;
            } 
            if(iCount == 2) 
                return vans;
        }
        if (iCount == 1)   //假如结束循环后计数器只有1,那么最后一个数一定是目标元素
            vans.emplace_back(arr[arr.size()-1]);
        return vans;
    }
};

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务