C国演义 [第十一章]

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: C国演义 [第十一章]

有效的字母异位词

力扣链接

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词

示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false

提示:

1 <= s.length, t.length <= 5 * 104

s 和 t 仅包含小写字母

题目理解

因为题目的要求是:


两个数组 仅仅包含小写字母 ⇒ 一共才26个英语字母

两个数组的大小是 1 <= length <= 5*10的四次方

⇒ 我们可以采用 哈希的思想

我们可以用一个数组(利用下标)来记录两个数组中每个字母出现的次数

然后通过比较 每个字母出现的次数 和 0 进行比较


🗨️那小写字母如何装换为数组下标?


通过ASCLL码来进行转化 ⇒ 字母 - 'a'

代码

class Solution {
public:
    bool isAnagram(string s, string t) 
    {
        int sum[26] = {0};
        // 如果两个数组的大小都不一样, 那就直接返回 false
        if(s.size() != t.size())
            return false;
        for(int i = 0; i < s.size(); i++)
        {
            sum[s[i] - 'a']++; // a数组的此字母对应的下标++
            sum[t[i] - 'a']--; // b数组的此字母对应的下标--
        }
        // 如果两个数组每个字符出现的次数是一样的, 每个下标对应的都是 0
        for(int i = 0; i < 26; i++)
        {
            if(sum[i] != 0)
                return false;
        }
        return true;
    }
};

两数之和

力扣链接

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现

你可以按任意顺序返回答案

示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]
示例 2:
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6
输出:[0,1]
  • 提示:
    2 <= nums.length <= 104
    -109 <= nums[i] <= 109
    -109 <= target <= 109
    只会存在一个有效答案

题目理解(暴力篇)

这题一看就是 低配版 ⇒ 2 <= size( ) <= 10^4, 这个数组的大小就是很巴适

暴力解法就是 两个for循环 ⇒ 最大时间也是 10^8, 不会爆时间的

代码

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

题目理解(哈希篇)

我们就会发现, 暴力解法虽然可以, 但是执行时间很长, 那有没有执行时间短的方法呢?

我们的一个思路是:
当我们顺序遍历该数组时, 当我们遍历到一个特定的下标(nums[i])时, 我们需要知道 target - nums[i] 这个数字是否在之前遍历过的数字里面出现过
如果出现 — — 返回 (target - nums[i]) 的下标 和 nums[i]的下标 (i)
如果没有出现 — — 不返回,
如果直至数组的结尾, 也没有出现, 那就返回空

当我们查询一个元素是否出现过, 或者一个元素在一个集合中是否存在 — — 那就可以使用哈希


在本题中, 我们不仅需要知道 (target - nums[i])这个数是否遍历过, 也要知道 (target - nums[i]) 的下标

那么我们就不能用数组来进行存储了, 可以采用 map的方式进行存储 (key, value)


⇒ key该存储什么, value又该存储什么呢?

由于本题需要返回的是下标, 所以 key应该存储下标, valu来存储数值


⇒ 那map有三种形式, 我们应该选取哪一种呢? map, unordered_map, multimap

由于unordered_map的查询效率是三个当中最快的, 那么我们就选用 unordered_map

代码

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) 
    {
        // 选用unordered_map这个数据结构
        std::unordered_map<int, int> map;
        for(int i = 0; i < nums.size(); i++)
        {
            // 查询 target - nums[i]是否被遍历过
            auto cur = map.find(target - nums[i]);
            // 之前有被遍历过, 那就直接返回
            if(cur != map.end())
            {
                return {cur->second, i};
            }
            // 没有遍历过, 那就收入map里面
            map.insert(pair<int, int> (nums[i], i));
        }
        // 最后在map里面都没有找到, 那就返回空
        return {}; 
    }
};

  • 这个题目要搞懂的四个点:
  1. 为什么要选取哈希的算法
  2. 哈希为啥要用map的数据结构
  3. map是用来干什么的
  4. map中的key是用来存放什么的, value是用来存放什么的

个人感觉, 搞懂这四个点, 那么此题目就理得条条顺顺喽!!!

相关文章
|
数据采集 存储 数据可视化
基于Python flask的猫眼电影票房数据分析可视化系统,可以定制可视化
本文介绍了一个基于Python Flask框架开发的猫眼电影票房数据分析可视化系统,该系统集成了数据爬取、存储处理、可视化展示和用户交互功能,使用户能够直观地分析和展示电影票房数据,具有高度定制性。
752 0
基于Python flask的猫眼电影票房数据分析可视化系统,可以定制可视化
|
1天前
|
人工智能 安全 测试技术
|
3天前
|
云安全 人工智能 安全
阿里云 Agentic SOC 位居 IDC MarketScape安全运营智能体2026领导者类别
以 Agentic AI 重构安全运营闭环,阿里云云安全在产品能力与市场份额
1157 3
|
3天前
|
数据采集 机器学习/深度学习 人工智能
田间杂草定位与检测4200张YOLO智慧农业数据集分享
本数据集含4200张真实农田图像,YOLO格式,单类别(杂草)高质量标注,覆盖多作物、多光照、多生长阶段等复杂场景,专为智慧农业杂草检测与智能除草设备研发设计,支持YOLOv5/v8/v10等主流模型训练。
348 93
|
4天前
|
缓存 UED 开发者
Codex109天重置23次,明天还要再送一次
Codex近109天完成23次额度重置,7月14日将迎来第24次。Tibo高频响应用户反馈:优化GPT-5.6高消耗问题、补发失效福利、调整重置时间——形成“反馈→回应→修复→补偿”正向闭环,彰显以用户为中心的产品哲学。(239字)
568 11
|
7天前
|
存储 人工智能 JSON
Qwen 本地部署搭配 ComfyUI 生成 AI 漫剧完整实操指南(小白零基础可落地,零成本无限生成+角色一致性天花板)
2026全网最优本地漫剧流水线:零成本、离线运行、角色统一、低配(8G显卡)可跑。融合Qwen本地大模型+ComfyUI双引擎,实现剧本生成→分镜绘图→动态成片全自动,隐私安全、无审核限流,新手30分钟上手,日更无忧。(239字)
|
7天前
|
人工智能 缓存 JSON
刚刚 GPT-5.6 发布,吊打 Claude 5 和 Grok 4.5?一手实测来啦!
GPT-5.6 刚发布,跑分号称超越 Fable 5,真的假的?附一手实测,让 3 个最强 AI 编程模型 GPT-5.6 Sol、Claude Fable 5、Grok 4.5 在 Cursor 里同时一把梭开发网页游戏,看看最新模型到底谁更能打。
364 0

热门文章

最新文章