๋ฌธ์
์ฝ๋
class Solution {
public:
int singleNumber(vector<int>& nums) {
map<int,int>m;
int ans;
for(int i:nums) m[i]++;
for(auto it = m.begin(); it!=m.end(); it++){
if(it->second==1){
ans=it->first;
break;
}
}
return ans;
}
};
ํ์ด
๋จ์ํ ๋ฐฐ์ด์์ ์ค๋ณต๋์ง ์์ ๋จ ํ๋์ ์๋ฅผ ์ฐพ์์ ์ถ๋ ฅํ๋ ๋ฌธ์ ์์ต๋๋ค. ๋๋ฆ ์ ํ์ด์ฒ๋ผ ํ์์ ๋ O(n)์ด๊ธฐ์ ํจ์จ์ ์ธ ์ฝ๋๋ผ๊ณ ์๊ฐํ๊ณ ์ ์ถํ์ผ๋, ์๊ฐ์ด ๊ฝค ๊ฑธ๋ฆฐ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ ๊ฒ ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๋ค๊ฐ ์๋์ ๊ฐ์ ํ์ด๋ฅผ ๋ณด์์ต๋๋ค.
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ans = 0;
for(int i:nums) ans^=i;
return ans;
}
};
์ด์ ์ map์ ์ฌ์ฉํ์ฌ ํ์๋ ํ์ด๋ณด๋ค ์๊ฐ์ด ๋๋ฐฐ๋ ์ ๊ฒ ๊ฑธ๋ ธ๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ ํจ์ฌ ๋ ์ก์๋จน์ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
ํ์ด๋ฅผ ๋ณด๋ฉด ๋ ผ๋ฆฌ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ ํผ ํ์ด์ธ๋ฐ ๊ทธ ๋ฐฉ๋ฒ์ด ์ ๋ฐํ์ต๋๋ค. XOR ์ฐ์ฐ์ธ ^ ๋นํธ์ฐ์ฐ์๋ ์๋์ ๊ฐ์ ์ง๋ฆฌํ๋ฅผ ๋ํ๋ ๋๋ค.
INPUT | OUTPUT | |
A | B | A XOR B |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
์ด ์๋ฆฌ๋ฅผ ์ด์ฉํด์ ๋ฐฐ์ด์ ๊ฐ์ด [4,1,2,1,2]๊ฐ ์๋ค๊ณ ์๊ฐํ๊ณ ans^=arr [i]; ๊ตฌ๋ฌธ์ ์ํํ๋ค๊ณ ํด๋ด ์๋ค.
์ฒ์ ans = 4๊ฐ๋ฉ๋๋ค.
๊ทธ๋ค์์ 0100^0001 = 0101 ์ด ๋์ด ans = 5์ด ๋๊ณ ,
๋ค์, 0101 ^ 0010 = 0111, ans=7,
๋ค์, 0111 ^ 0001 = 0110, ans= 6,
๋ค์, 0110 ^0010 = 0100 , ans=4 ๊ฐ ๋์ด ์ค๋ณต๋์ง ์์ 4์ ๊ฐ์ ๋ฝ์๋ด๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๊ฒฐ๊ตญ ๋๊ฐ์ ๊ฐ์ ๋ํด ^ ์ฐ์ฐ์ ๋ ๋ฒ ์ํํ๊ฒ ๋๋ฉด, ์๋์ ๊ฐ์ผ๋ก ๋์์ค๋ ์๋ฆฌ๋ฅผ ์ด์ฉํ ๊ฒ์ ๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > Leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Leetcode,c++] Majority Element (0) | 2021.11.28 |
---|---|
[Leetcode,c++] Network Delay Time (0) | 2021.11.22 |
[Leetcode,c++] Valid Anagram (0) | 2021.11.20 |
[Leetcode,c++] Combination Sum II (0) | 2021.11.16 |
[Leetcode,c++] Subsets II (0) | 2021.11.15 |
[Leetcode,c++] Rotate Image (0) | 2021.11.15 |
๋๊ธ