当前位置: 首页 > news >正文

代码随想录day06

242.有效的字母异位词

刚学哈希表想着使用unordered_set来实现,结果无法通过,原因是对字母异位词理解有问题,字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。对字母出现的次数有要求,无法使用unordered_set

bool isAnagram(string s, string t) {std::unordered_set<char> _slist;for(int i = 0; i < s.size(); i++){_slist.insert(s[i]);}std::unordered_set<char> _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::multiset<char> s_set;for(int i = 0; i < s.size(); i++){s_set.insert(s[i]);}std::multiset<char> t_set;for(int j = 0; j < t.size(); j++){t_set.insert(t[j]);}return s_set == t_set;}

349.两个数组的交集

vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {vector<int> result;std::unordered_set<int> nums1_set;for(int i = 0; i < nums1.size(); i++){nums1_set.insert(nums1[i]);}std::unordered_set<int> 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_set<int> 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暴力解法

    vector<int> twoSum(vector<int>& nums, int target) {vector<int> result;for(int i = 0; i < nums.size() - 1; i++){for(int j = i+1; j < nums.size(); j++){if(nums[i]+nums[j] == target){result.push_back(i);result.push_back(j);return result;}}}return result;}

//b学习使用map对象,主要了解何时使用哈希法

    vector<int> twoSum(vector<int>& nums, int target) {std::unordered_map<int,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(pair<int,int>(nums[i], i));}}return {};}

http://www.lryc.cn/news/532599.html

相关文章:

  • Spring @PropertySource:让你的应用配置更加模块化和可维护
  • 【Java】MyBatis动态SQL
  • 旅行社项目展示微信小程序功能模块和开发流程
  • litemall,又一个小商场系统
  • WGCLOUD监控系统部署教程
  • Python大数据可视化:基于Python的王者荣耀战队的数据分析系统设计与实现_flask+hadoop+spider
  • (苍穹外卖)项目结构
  • ASP.NET Core筛选器Filter
  • ChatGPT怎么回事?
  • 软件工程-可行性研究
  • 园区网设计与实战
  • spy-debugger + Charles 调试移动端/内嵌小程序H5
  • 4.攻防世界 unseping
  • 安装和使用 Ollama(实验环境windows)
  • (一)DeepSeek大模型安装部署-Ollama安装
  • 【大数据技术】搭建完全分布式高可用大数据集群(ZooKeeper)
  • 前端学习-tab栏切换改造项目(三十一)
  • 高性能 AI 处理器亲和性调度算法实现
  • mq消息丢了,有哪些现象?有什么补救措施
  • Java面试场景题分享
  • 《ISO/SAE 21434-2021 道路汽车--网络安全工程》标准解读
  • 【BUUCTF逆向题】[MRCTF2020]Transform
  • 漏洞挖掘 | 基于mssql数据库的sql注入
  • Java 中 LinkedList 的底层源码
  • 使用服务器部署DeepSeek-R1模型【详细版】
  • k8s,1.修改容器内主机名和/etc/hosts 文件,2.root特权容器,3.pod安全策略(基于名称空间
  • MSPFN 代码复现
  • 除了console.error,还有什么更好的错误处理方式?
  • 力扣.270. 最接近的二叉搜索树值(中序遍历思想)
  • Yageo国巨的RC系列0402封装1%电阻库来了