349
class Solution { public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { set<int> record(nums1.begin(),nums1.end()); set<int> resultset; for(int i=0;i<nums2.size();i++) if(record.find(nums2[i])!=record.end()) resultset.insert(nums2[i]); return vector<int>(resultset.begin(),resultset.end()); } };
350
class Solution { public: vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { vector<int> result; unordered_map<int,int> record; for (int i = 0; i < nums1.size(); i++) record[nums1[i]]++; for(int i=0;i<nums2.size();i++) if (record[nums2[i]] > 0) { result.push_back(nums2[i]); record[nums2[i]]--; } return result; } };
242
class Solution { public: bool isAnagram(string s, string t) { if (s.empty()&&t.empty()) return true; unordered_map<char, int> record1; unordered_map<char, int> record2; for (auto ch : s) record1[ch]++; for (auto ch : t) record2[ch]++; if (record1 == record2) return true; else return false; } };
202
用set实现 时间6ms ; 用map实现,时间4ms
class Solution { public: bool isHappy(int n) { unordered_set<int> record; //用来判断是否遇到循环,用来查找当前数组中是否存在某个值 int sum = n; while (true) { if (sum == 1) return true; else { if (record.find(sum) != record.end()) return false; record.insert(sum); } n = sum; sum = 0; while (n != 0) { sum += (n % 10)*(n % 10); n = n / 10; } } } };
class Solution { public: bool isHappy(int n) { unordered_map<int,int> map; //用来判断是否遇到循环,用来查找当前数组中是否存在某个值 int sum = n; while (true) { if (sum == 1) return true; else { if (map[sum]>1) return false; map[sum]++; } n = sum; sum = 0; while (n != 0) { sum += (n % 10)*(n % 10); n = n / 10; } } } };
290
class Solution { public: bool wordPattern(string pattern, string str) { //下面这一堆其实是实现了str.split(' ')函数 vector<string> words; int i = 0, j = 0; for (; i < str.size(); i++) { if (str[i] == ' ') { words.push_back(str.substr(j, i - j)); j = i + 1; } } words.push_back(str.substr(j, str.size() - j)); if (pattern.size() != words.size()) return false; unordered_map<char, string> map1; unordered_map<string, char> map2; for (auto ch : pattern) map1[ch] = " "; for (int i = 0; i < words.size(); i++) map2[words[i]] = ' '; for (int i = 0; i < words.size(); i++) { if (map2[words[i]] == ' ') map2[words[i]] = pattern.at(i); else { if (map2[words[i]] != pattern.at(i)) return false; } if (map1[pattern.at(i)] == " ") map1[pattern.at(i)] = words[i]; else { if (map1[pattern.at(i)] != words[i]) return false; } } return true; } };