现在做一个网站多少钱,合肥寒假兼职工网站建设,个人主页网站欣赏,给自己家的公司做网站好做吗242.有效的字母异位词
刚学哈希表想着使用unordered_set来实现#xff0c;结果无法通过#xff0c;原因是对字母异位词理解有问题#xff0c;字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语#xff0c;并使用所有原字母一次。对字母出现的次数有要求结果无法通过原因是对字母异位词理解有问题字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语并使用所有原字母一次。对字母出现的次数有要求无法使用unordered_set
bool isAnagram(string s, string t) {std::unordered_setchar _slist;for(int i 0; i s.size(); i){_slist.insert(s[i]);}std::unordered_setchar _tlist;for(int j 0; j t.size(); j){_tlist.insert(t[j]);}bool flag _slist _tlist;if(flag){return s.size() t.size();}else{return flag;}}
正确方法 1学习使用数组来做哈希表
bool isAnagram(string s, string t) {int record[26] {0};for(int i 0; i s.size(); i){record[s[i] - a];}for(int j 0; j t.size(); j){record[t[j] - a]--;}for(int k 0; k 26; k){if(record[k] ! 0){return false;}}return true;}
正确方法2: 利用multiset特性值有序并且可以重复
bool isAnagram(string s, string t) {std::multisetchar s_set;for(int i 0; i s.size(); i){s_set.insert(s[i]);}std::multisetchar t_set;for(int j 0; j t.size(); j){t_set.insert(t[j]);}return s_set t_set;}
349.两个数组的交集
vectorint intersection(vectorint nums1, vectorint nums2) {vectorint result;std::unordered_setint nums1_set;for(int i 0; i nums1.size(); i){nums1_set.insert(nums1[i]);}std::unordered_setint nums2_set;for(int j 0; j nums2.size(); j){nums2_set.insert(nums2[j]);}for(const auto elem : nums1_set){if(nums2_set.find(elem) ! nums2_set.end()){result.push_back(elem);}}return result;
}
202.快乐数
练习如何进行单数之和计算以及如何判断退出机制
// 如果这个sum曾经出现过说明已经陷入了无限循环了立刻return false int getSum(int n){int sum 0;do{int yushu (n % 10) * (n % 10);sum yushu;n n / 10;}while(n ! 0);return sum;}bool isHappy(int n) {std::unordered_setint result;while(1){int sum getSum(n);if(sum 1){return true;}else{if(result.find(sum) ! result.end()){return false;}else{result.insert(sum);}}n sum;}}
1.两数之和
//a暴力解法 vectorint twoSum(vectorint nums, int target) {vectorint result;for(int i 0; i nums.size() - 1; i){for(int j i1; j nums.size(); j){if(nums[i]nums[j] target){result.push_back(i);result.push_back(j);return result;}}}return result;}
//b学习使用map对象主要了解何时使用哈希法 vectorint twoSum(vectorint nums, int target) {std::unordered_mapint,int nums_map;for(int i 0; i nums.size(); i){if(nums_map.find(target - nums[i]) ! nums_map.end()){return {nums_map.find(target-nums[i])-second, i};}else{nums_map.insert(pairint,int(nums[i], i));}}return {};}