Leetcode 只出现一次的数字

本文最后更新于:2020年7月4日 晚上

地址:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/25/

题目:

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,1]
输出: 1

示例 2:

输入: [4,1,2,1,2]
输出: 4

我的解决方案:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
    //如果数组为空显然不存在题述两种情况
	if (nums.size() == 0)
		return 0;
    //如果数组只有一个元素,则直接返回这个元素
	else if (nums.size() == 1)
		return nums[0];
    //如果上述两种情况都不满足
	for (int i = 0; i < nums.size(); i++) {
		bool bl = false;
		for (int j = 0; j < nums.size(); j++) {
            //如果j==i,显然nums[j]==nums[i],直接跳过这种情况
			if (j == i)
				continue;
            //如果j!=i并且nums[j]==nums[i],说明这个元素出现了不止一次
			else if (nums[j] == nums[i])
				break;
            //如果i已经取到了最后一个元素,前面第一个if排除了j==i的情况
            //所以这里当j取到倒数第二个元素就判断结束
			else if (i == nums.size() - 1 && j == nums.size() - 2)
				bl = true;
            //如果j取到最后一个元素都没有找到与nums[i]相同的元素,则元素nums[i]只出现了一次
			else if (j == nums.size() - 1)
				bl = true;
		}
		if (bl == true)
			return nums[i];
	}
	return 0;
    }
};

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!