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

P4【力扣217,389,496】【数据结构】【哈希表】C++版

【217】存在重复元素

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。

示例 1:

输入:nums = [1,2,3,1]
输出:true

示例 2:

输入:nums = [1,2,3,4]
输出:false

示例 3:

输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true

提示:

  • 1 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9

 自己做:

class Solution {
public:bool containsDuplicate(vector<int>& nums) {int len = nums.size();unordered_map<int, int> num_map;for(int i = 0; i < len; i++){if(num_map.find(nums[i]) != num_map.end()){num_map[nums[i]] += 1;}else{num_map[nums[i]] = 1;}}for (unordered_map<int, int>::const_iterator it = num_map.cbegin(); it != num_map.cend(); ++it) {  if(it->second >= 2){return true;} }return false;  }
};// 哈希表:key为值,value为该值的次数

time:11:38

复杂度分析:

时间复杂度:O(N)

空间复杂度:O(N)

官方题解:

class Solution {
public:bool containsDuplicate(vector<int>& nums) {unordered_set<int> s;for(int x:nums){if(s.find(x) != s.end()){return true;}else{s.insert(x);}}return false;}
};

【389】找不同

给定两个字符串 s 和 t ,它们只包含小写字母。

字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

示例 1:

输入:s = "abcd", t = "abcde"
输出:"e"
解释:'e' 是那个被添加的字母。

示例 2:

输入:s = "", t = "y"
输出:"y"

提示:

  • 0 <= s.length <= 1000
  • t.length == s.length + 1
  • s 和 t 只包含小写字母
class Solution {
public:char findTheDifference(string s, string t) {string ss = s + t;int len = ss.size();unordered_map<char, int> add_map;for(int i = 0; i < len; i++){if(add_map.find(ss[i]) != add_map.end()){add_map[ss[i]] += 1;}else{add_map[ss[i]] = 1;}}for(auto it = add_map.begin(); it != add_map.end(); ++it) {if(it->second % 2 != 0){return it->first;}} return ' ';}
};

 思路:将两个字符拼接在一块,存入哈希表,只要该哈希表的值是奇数则可认为是被添加的字符

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

相关文章:

  • PE文件(六)新增节-添加代码作业
  • ICRA 2024: NVIDIA 联合多伦多大学、加州大学伯克利分校、苏黎世联邦理工学院等研究人员开发了精细操作的手术机器人
  • 探索Go语言的原子操作秘籍:sync/atomic.Value全解析
  • 【java深入学习第3章】利用 Spring Boot 和 Screw 快速生成数据库设计文档
  • 继“三级淋巴结”之后,再看看“单细胞”如何与AI结合【医学AI|顶刊速递|05-25】
  • [图解]产品经理创新之阿布思考法
  • Proteus仿真小技巧(隔空连线)
  • 抖音极速版:抖音轻量精简版本,新人享大福利
  • leetCode-hot100-数组专题之双指针
  • 完成商品SPU管理页面
  • Ansible实战YAML语言完成apache的部署,配置,启动全过程
  • 深入探索微软Edge:新一代浏览器的演进与创新
  • k8s使用Volcano调度gpu
  • x的平方根-力扣
  • hot100 -- 回溯(上)
  • 5.24数据库作业
  • go-zero 实战(5)
  • Python异常处理:打造你的代码防弹衣!
  • Linux——进程与线程
  • ping 探测网段哪些地址被用
  • OSPF问题
  • asgasgas
  • Go语言实现人脸检测(Go的OpenCV绑定库)
  • springboot中线程池的使用
  • ubuntu20.04 开机自动挂载外加硬盘
  • 5.18 TCP机械臂模拟
  • linux---线程控制
  • 低代码开发:拖拽式可视化构建工业物联网系统
  • 【撸源码】【ThreadPoolExecutor】线程池的工作原理深度解析——上篇
  • webpack 学习之 五大核心