当前位置:   article > 正文

(C++哈希表01)

(C++哈希表01)

242、有效的字母异位词

用数组模拟哈希表

  1. class Solution {
  2. public:
  3. bool isAnagram(string s, string t) {
  4. int record[26] = {0};
  5. for(int i = 0; i < s.size(); i++) {
  6. record[s[i] - 'a']++;
  7. }
  8. for(int i = 0; i < t.size(); i++) {
  9. record[t[i] - 'a']--;
  10. }
  11. for(int i = 0; i < 26; i++) {
  12. if(record[i] != 0) {
  13. return false;
  14. }
  15. }
  16. return true;
  17. }
  18. };

时间复杂度:O(n + m);

空间复杂度:O(1)

349、两个数组的交集

set占用空间很大,如果题目中的数据有限,优先使用数组。

unordered_set<int> nums_set(nums1.begin(), nums1.end()); 迭代器初始化

find(key)函数,找到key返回begin(),找不到返回end()

  1. class Solution {
  2. public:
  3. vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
  4. unordered_set<int> result_set;
  5. //迭代器初始化
  6. unordered_set<int> nums_set(nums1.begin(), nums1.end());
  7. for(int num: nums2) {
  8. //找不到num,find()会返回end()
  9. if(nums_set.find(num) != nums_set.end()) {
  10. result_set.insert(num);
  11. }
  12. }
  13. return vector<int>(result_set.begin(), result_set.end());
  14. }
  15. };

时间复杂度:O(n)

空间复杂度:O(n)

202、快乐数

  1. class Solution {
  2. public:
  3. bool isHappy(int n) {
  4. unordered_set<int> result_set;
  5. int count = 0;
  6. result_set.insert(n);
  7. while(true) {
  8. while(n > 0) {
  9. int x = n % 10;
  10. count += x * x;
  11. n /= 10;
  12. }
  13. if(count == 1) {
  14. return true;
  15. }
  16. if(result_set.find(count) != result_set.end()) {
  17. return false;
  18. }
  19. result_set.insert(count);
  20. n = count;
  21. count = 0;
  22. }
  23. }
  24. };

时间复杂度:O(logn)

空间复杂度:O(logn)

1、两数之和

  1. class Solution {
  2. public:
  3. vector<int> twoSum(vector<int>& nums, int target) {
  4. unordered_map<int,int> map;
  5. for(int i = 0; i < nums.size(); i++) {
  6. auto iter = map.find(target - nums[i]);
  7. if(iter != map.end()) {
  8. return {iter->second, i};
  9. }
  10. map.insert(pair<int,int>(nums[i], i));
  11. }
  12. return {};
  13. }
  14. };

时间复杂度:O(n)

空间复杂度:O(n)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/801894
推荐阅读
相关标签
  

闽ICP备14008679号