[Leetcode,c++] Single Number
λ¬Έμ
Single Number - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
μ½λ
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μ κ°μ λ½μλ΄λ κ²μ μ μ μμ΅λλ€.
κ²°κ΅ λκ°μ κ°μ λν΄ ^ μ°μ°μ λ λ² μννκ² λλ©΄, μλμ κ°μΌλ‘ λμμ€λ μ리λ₯Ό μ΄μ©ν κ²μ λλ€.