lintcode算法题(1)

1.落单的数

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

Example 1:

Input:[1,1,2,2,3,4,4]
Output:3
解释:
仅3出现一次

Example 2:

Input:[0,0,1]
Output:1
解释:
仅1出现一次

挑战

一次遍历,常数级的额外空间复杂度
注意事项

n≤100

利用两个数之间的异或运算

class Solution {
public:
    /**
     * @param A: An integer array
     * @return: An integer
     */
    int singleNumber(vector<int> &A) {
        int flag = 0;
        for(auto it = A.begin(); it != A.end(); it++){
            flag ^= *it;
        }
        return flag;
    }
};

计算10以内的数字出现多少次

void singleNumber(vector<int> &A) {
    int b[10]={0};
    for(auto it = A.begin(); it != A.end(); it++){
        b[*it]++;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40770277/article/details/88936612