立志重刷代码随想录60天冲冲冲!!——第五天
242.有效的字母异位词
数组模拟hash表
class Solution { public: bool isAnagram(string s, string t) { /* 初始化vector,26个0 */ vector<int> table(26, 0); /* 自动迭代器 */ for (auto &ch: s) { table[ch - 'a']++; } for (auto &ch: t) { table[ch - 'a']--; } for (int i = 0; i < 26; i++) { if (table[i] != 0) { return false; } } return true; } };
349. 两个数组的交集
class Solution { public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { /* 无须set,unordered_set,初始化需加强 */ unordered_set<int> res; unordered_set<int> nums1_set(nums1.begin(), nums1.end()); /* nums1_set.find()是会重头遍历,直到最后一个end() */ for (auto num: nums2) { if (nums1_set.find(num) != nums1_set.end()) { res.insert(num); } } return vector<int>(res.begin(), res.end()); } };
202. 快乐数
需要记一下,如何将一个数字按照每一位拆分
class Solution { public: /* 计算每个数的各个位置平方和,记下来! */ int GetNum(int num) { int sum = 0; while(num) { sum += (num % 10) * (num % 10); num /= 10; } return sum; } bool isHappy(int n) { unordered_set<int> res; while (n != 1) { n = GetNum(n); if (res.find(n) != res.end()) { return false; } else { res.insert(n); } } return true; } };
1. 两数之和
使用迭代器it
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> hashmap; for (int i = 0; i < nums.size(); i++) { // 使用迭代器好一些 auto it = hashmap.find(target - nums[i]); if (it == hashmap.end()) { hashmap[nums[i]] = i; } else { return {it->second, i}; } } return {}; } };
代码随想录更新 文章被收录于专栏
冲冲冲冲冲冲!