代码随想录算法训练营第六天 |242.有效的字母异位词 、349. 两个数组的交集、202. 快乐数、1. 两数之和

77 阅读1分钟

代码随想录算法训练营第六天 |242.有效的字母异位词 、349. 两个数组的交集、202. 快乐数、1. 两数之和

使用数组来做哈希的题目是因为题目限制数组大小,如果分散的话不要使用数组,会造成极大的空间浪费

242.有效的字母异位词

题目链接:242.有效的字母异位词

  • 暴力法
  • 哈希法 长度26的数组
  • hashmap理论上应该可以,还没尝试过

349. 两个数组的交集

题目链接:349. 两个数组的交集

  • unordered_set<int>(nums1.begin(), nums1.end())可以直接把vector装到set中
  • 一个set用来装第一个数组的集合,第二个在遍历第二个数组的时候用来装结果集

202. 快乐数

题目链接:202. 快乐数

  • 不停地往集合里添加数
  • 如果检测到循环则说明不是快乐数

1. 两数之和

题目链接:1. 两数之和leetcode.cn/problems/ha…)

 class Solution {
 public:
     vector<int> twoSum(vector<int>& nums, int target) {
         unordered_map<int, int> map1;
         for(int i = 0; i < nums.size(); i++) {
 ​
             if(map1.find(target - nums[i]) != map1.end()) {
                 int index2 = map1.at(target - nums[i]);
                 return vector<int>{i, index2};
             } else {
                 map1.insert(pair<int, int> (nums[i], i));
             }
         }
         return vector<int>{-1, -1};
     }
 };