LeetCode 136

it2022-05-09  25

问题描述:

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

说明:

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

示例 1:

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

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

哈希表和异或解法

class Solution { public: int singleNumber(vector<int>& nums) { unordered_set<int> bobo; int ans; for(auto i : nums){ if(bobo.count(i)) bobo.erase(i); else bobo.insert(i); } for(auto j : bobo) ans = j; return ans; } }; class Solution { public: int singleNumber(vector<int>& nums) { int ans = nums[0]; for(int i = 1; i < nums.size(); ++ i){ ans = ans ^ nums[i]; } return ans; } };


最新回复(0)