Leetcode 只出现一次的数字
本文最后更新于:2023年2月8日 晚上
地址: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;
}
};
Leetcode 只出现一次的数字
https://mxy493.xyz/2019012229459/