1. LeetCode 136 只出现一次的数字🔍
- 🍎 解题思路:
- 只需要遍历一遍,
O(n)
的时间复杂度就可以计算出来。( •̀ ω •́ )
- 🍎 解题代码:
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ans = 0;
for (auto num : nums)
{
ans ^= num;
}
return ans;
}
};
2. LeetCode 137 只出现一次的数字 II 🔍
- 🍎 解题思路:
- 🍎 解题代码:
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ans = 0; // 初始化结果变量
for (int i = 0; i < 32; i++) // 外层循环,遍历32个位
{
int cnt1 = 0; // 初始化计数变量
for (int x : nums) // 内层循环,遍历数组中的每一个数字
{
cnt1 = cnt1 + (x >> i & 1); // 统计当前位为1的次数
}
ans |= cnt1 % 3 << i; // 计算只出现一次的数字在当前位的值,并更新结果
}
return ans;
}
};