算法训练营第六天(7.17)

2023-11-19

目录

unordered_map

LeeCode242. Valid Anagram

梦的开始:LeeCode1. Two Sum

unordered_set

LeeCode349. Intersection of Two Arrays

LeeCode202. Happy Number


C++中的unordered_mapunordered_set是标准库中提供的两种容器,用于实现哈希表(Hash Table)数据结构。它们提供了高效的查找、插入和删除操作,适用于需要快速访问和操作元素的场景。

  1. unordered_map

    • unordered_map是一种关联容器,用于存储键值对(key-value pairs)。
    • 它基于哈希表实现,具有快速的查找性能,平均时间复杂度为O(1)。
    • 每个键值对称为一个元素,通过键进行唯一标识和访问。
    • 键和值可以是任意类型,但键必须是可哈希化的(具有哈希函数)。
    • unordered_map提供了插入、删除、查找元素的操作,以及迭代器进行遍历操作。
  2. unordered_set

    • unordered_set是一种集合容器,用于存储唯一的元素集合。
    • 它基于哈希表实现,具有快速的查找性能,平均时间复杂度为O(1)。
    • 每个元素在集合中是唯一的,重复的插入将被忽略。
    • 元素的类型必须是可哈希化的(具有哈希函数)。
    • unordered_set提供了插入、删除、查找元素的操作,以及迭代器进行遍历操作。

unordered_map

LeeCode242. Valid Anagram

题目地址:力扣

题目类型:哈希映射

 思路

  1. 首先用哈希映射存储字符串s中每个char的个数
  2. 遍历字符串t
  3. 最后判断s的char是否被全部使用
class Solution {
public:
    bool isAnagram(string s, string t) {
        unordered_map<char, int> ma;
        // 用来存储s中所有char的个数
        for (char c : s) {
            ma[c]++;
        }
        // 判断t中是否有s中未出现的char
        for (char c : t) {
            if (ma[c] == 0) return false;
            ma[c]--; 
        }
        // 判断是否所有元素都用完了
        for (auto it : ma) {
            if (it.second != 0) return false; 
        }
        return true;
    }
};

梦的开始:LeeCode1. Two Sum

题目地址:力扣

题目类型:哈希映射

 思路:构造哈希map,一次遍历nums,每次都将target - nums[i]放入map中,之后若出现某个nums[j]出现在map中,则说明找到了。

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int> ma;
        for (int i = 0; i < nums.size(); ++i) {
            auto it = ma.find(nums[i]);
            if (it != ma.end()) return {it->second, i};
            ma[target - nums[i]] = i; 
        }
        return {};
    }
};

unordered_set

LeeCode349. Intersection of Two Arrays

题目地址:力扣

题目类型:哈希set

思路: 

  1. 将nums1中出现的所有char存入unordered_set中
  2. 依次遍历nums2,看有哪些char在两个数组中同时出现
class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> seen;
        vector<int> res;
        for (auto it : nums1) {
            seen.insert(it);
        }
        for (auto it : nums2) {
            if (seen.count(it)) {
                res.emplace_back(it);
                seen.erase(it);
            }
        }
        return res;
    }
};

LeeCode202. Happy Number

题目地址:力扣

题目类型:哈希set

 思路:当n不等与1时,一直遍历下去,并且要将每次的n存入到哈希set中;

停止遍历的条件:n==1 或者 哈希set中出现了已经存入的元素,说名此时形成了死循环

class Solution {
private:
    int happy(int n) {
        int sum = 0;
        while (n) {
            sum += (n % 10) * (n % 10);
            n /= 10;
        }
        return sum;
    }
public:
    bool isHappy(int n) {
        unordered_set<int> seen;
        while (n != 1) {
            // 如果seen中能够找到,则说明陷入循环,直接返回false
            if (seen.count(n)) return false;
            seen.insert(n);
            n = happy(n);
        }
        return true;
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法训练营第六天(7.17) 的相关文章

  • 本周总结——勇敢尝试和体验

    人间烟火 生活趣事 快开学了 这一周都在写项目 键盘前一段时间坏掉了 当时买了保险 3年之内只换不修的 挺奇葩的 寄过去13天都没搭理我 也没说给换货 前几天忍不住打电话问了问 下午就发货了 昨天下午就领到了 看来有些东西还是需要主动问一问
  • 搞懂后序遍历!只需要这一篇

    讲讲对于后序遍历的理解 并通过题目加深理解 文章目录 核心 基础实现方式 104 二叉树的最大深度 111 二叉树的最小深度 222 完全二叉树的节点个数 110 平衡二叉树 101 对称二叉树 总结 核心 后序遍历的顺序为左右中 在一棵二
  • 在Ubuntu上安装Android-SDK的方法

    一 安装和配置Ubuntu系统 1 安装Ubuntu Desktop 14 04 x86 64 2 启用root账户 Ubuntu 14 04默认是不允许root账户登录的 在登录窗口只能看到普通用户和访客登录 在shell中运行以下命令即

随机推荐

  • 优化游标性能

    最好的改进光标性能的技术就是 能避免时就避免使用游标 摘自 Transact SQL权威指南 Ken Henderson 著 最好的改进光标性能的技术就是 能避免时就避免使用游标 SQL Server是关系数据库 其处理数据集比处理单行好得
  • ROS学习笔记(7):Navigation 导航

    目录 8 Navigation 8 1 Navigation工作框架 8 2 move base 8 3 Costmap 8 4 map server 8 5 AMCL 定位 8 Navigation Navigation是机器人最基本的功
  • 小程序显示富文本内容(wxparse)

    1 引入wxParse 下载地址https github com icindy wxParse 2 全局配置 3 获取富文本内容的js 加入如下内容
  • 在电力系统无功不足的情况下,为什么不宜采用调整变压器分头的办法来提高电压?

    在电力系统无功不足的情况下 为什么不宜采用调整变压器分头的办法来提高电压 答 当某一地区的电压由于变压器分头的改变而升高的时候 该地区所需的无功功率也增大了 这就可能扩大系统的无功缺额 从而导致整个系统的电压水平更加下降 从全局来看 这样做
  • Redis VS Memcached压力测试报告

    一 测试背景与目标 了解Redis和memcached在高并发条件下的响应时间 吞吐量情况 以及对于服务器的压力情况 包括CPU IO 网络 考察目前的memcached存储timeline的方式的在高并发条件下的响应时间 吞吐量 负载情况
  • flink大数据处理流式计算详解

    flink大数据处理 文章目录 flink大数据处理 二 WebUI可视化界面 测试用 三 Flink部署 3 1 JobManager 3 2 TaskManager 3 3 并行度的调整配置 3 4 区分 TaskSolt和parall
  • 7、MySQL默认值(DEFAULT)

    默认值 Default 的完整称呼是 默认值约束 Default Constraint 用来指定某列的默认值 在表中插入一条新记录时 如果没有为某个字段赋值 系统就会自动为这个字段插入默认值 例如 员工信息表中 部门位置在北京的较多 那么部
  • ASPX页面传参中文乱码处理

    前端 function var msg 这是一段中文参数 window location href New aspx name escape msg 后台 string msg Server UrlDecode Request msg To
  • 【前端】批量导入和导出Excel数据

    1 准备 excel导入功能需要使用npm包xlsx 所以需要安装xlsx插件 读取和写入都依赖她 npm i xlsx 0 17 0 vue element admin模板提供了一个导入excel数据的文件 我们只需用即可 代码地址 ht
  • TypeError: ‘(slice(None, None, None), slice(None, None, None))‘ is an invalid key

    这种错误很常见 主要可能是我们操作的 df 是一个dataframe 应该正确的运用索引 loc或者iloc 例如 我遇到一次错误 factors data 其它因素 m n factors shape corrs np zeros n n
  • 深度系统linux deepin如何按装,安装深度Deepin 15.11操作系统的方法

    你可以使用VirtualBox 6虚拟机安装深度Deepin 15 11操作系统 也可以使用硬盘 光盘 USB等方式安装Deepin 15 11 电脑为huawei matebook 14 在配置VirtualBox 6后进行安装Deepi
  • 组件间样式覆盖问题--CSS Modules

    1 组件间样式覆盖问题 问题 CityList 组件的样式 会影响 Map 组件的样式 原因 在配置路由时 CityList 和 Map 组件都被导入到项目中 那么组件的样式也就被导入到项目中了 如果组件之间样式名称相同 那么一个组件中的样
  • 【Android】实现两个界面切换跳转(一个Activity,两个XML之间的来回切换)

    在安卓中最常见的就是按下按钮后跳转到另一个界面 关于界面的跳转有两种方法 方法1 两个Activity 两个XML文件之间使用Intent显示实现页面的跳转 详情可见 https blog csdn net yao yaoya articl
  • 接口自动化测试框架

    本文介绍一个接口自动化测试框架 Python unittest requests 实现结果 读取Excel接口测试用例并执行 输出测试报告 框架脑图 如图 各个模块及作用如上 处理数据库 db funcs用来处理数据库 实现数据库数据的读取
  • js中中括号,大括号使用详解

    http blog sina com cn s blog 5cd7f5b401019rsd html 一 大括号 表示定义一个对象 大部分情况下要有成对的属性和值 或是函数 如 var LangShen Name Langshen AGE
  • vue使用import()提示语法错误

    一 使用import 引入 组件 二 编译时提示语法检测错误 三 解决方法 第一种方式 直接安装 D YLKJPro CMWEB 03Implement CustomMapWeb gt npm install D babel plugin
  • 小白学协程笔记2-c语言实现协程-2021-2-10

    文章目录 前言 一 c语言中协程切换方式 二 使用setjmp 和 longjmp实现协程切换 1 setjmp和longjmp函数简介 2 协程实现 三 使用switch case实现协程切换 1 switch case小技巧 2 协程实
  • SQL题目练习---三表联查

    一 数据库中有三张如下所示的表 学生表 教师表 成绩表 查出橘右京老师的学生所有分数 按照成绩倒序排列 分析 1 本质是一个三表联查问题 SQL语句为 select from A inner join 表B on 表A 列1 表B 列2 i
  • 【小程序】封装弹出框+选择器组件:选择器选择

    效果 用的库 usingComponents van popup vant weapp popup index van cell vant weapp cell index van cell group vant weapp cell gr
  • 算法训练营第六天(7.17)

    目录 unordered map LeeCode242 Valid Anagram 梦的开始 LeeCode1 Two Sum unordered set LeeCode349 Intersection of Two Arrays LeeC