【Leetcode60天带刷】day06哈希表——242.有效的字母异位词,349. 两个数组的交集,202题. 快乐数,1. 两数之和

news2025/2/13 13:04:07


 题目:242.有效的字母异位词

Leetcode原题链接:242. 有效的字母异位词


 思考历程与知识点: 

如果一个字母一个字母的找,也就是暴力,用两个for的话时间复杂度是O(N^2);

我们可以换个思路,a~z一共26个字母,我们开一个长度26的数组 f,把每个字母出现的次数记录下来, a 就是 f [0], b 就是 f [1],c就是 f [2] , 依此类推,第二个字符串也是同样开一个26的数组 f2 [ ]。最后只需要对比两个数组里的次数是否都相同就可以了。


 题解:

class Solution {
public:
    bool isAnagram(string s, string t) {
        int f[26]={0},f2[26]={0};

        if(s.size()!=t.size())return false;// 长度不一样的话,肯定不对
        
        for(int i = 0; i < s.size(); i++) {
            f[s[i] - 'a']++;
            f2[t[i] - 'a']++;
        }

        for(int i = 0; i < 26; i++) {
            if(f[i] != f2[i]) return false;
        }

        return true;

    }
};

题目:349. 两个数组的交集

Leetcode原题链接:349. 两个数组的交集


 思考历程与知识点: 

题目很简单,求集合,用数组可以做,但我们尝试学习set的方法来完成。

介绍今天要学习的新东西:unordered_set.

unordered_set: 无序set, set里的值不能重复。

unordered_set用在这个去重的题目里就特别合适了,,可以直接把重复值去掉。

具体如何使用看下面题解应该就明白了。


 题解:

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> res; // 存放结果,之所以用set是为了给结果集去重
        unordered_set<int> nums_set(nums1.begin(), nums1.end());//把nums1再存为 unordered_set.因为vector没有find函数。
        for (int i=0;i<nums2.size();i++) {
            // 发现nums2的元素 在nums_set里又出现过
            if (nums_set.find(nums2[i]) != nums_set.end()) {
                res.insert(nums2[i]);在res结果数组中插入数字
            }
        }
        return vector<int>(res.begin(), res.end());
    }
};

题目:202题. 快乐数

Leetcode原题链接:202. 快乐数


 思考历程与知识点: 

题目特意说明,可能会无限循环,也就是sum和可能相等,所以需要记录sum,当重复的时候进行退出。


 题解:

class Solution {
public:
    // 取数值各个位上的单数之和
    int getSum(int n) {
        int sum = 0;
        while (n) {
            sum += (n % 10) * (n % 10);
            n /= 10;
        }
        return sum;
    }
    bool isHappy(int n) {
        unordered_set<int> set;
        while(1) {
            int sum = getSum(n);
            if (sum == 1) {
                return true;
            }
            // 如果这个sum曾经出现过,说明已经陷入了无限循环了,立刻return false
            if (set.find(sum) != set.end()) {
                return false;
            } else {
                set.insert(sum);
            }
            n = sum;
        }
    }
};

 题目:1. 两数之和

 Leetcode原题链接:1. 两数之和(Leetcode的第一道题)


 思考历程与知识点: 

如果暴力来做,两个for,时间复杂度O(N^2),这里我们还是尝试学习进行优化。

新知识点:map。

map: 可以看做是一个动态数组,类似于vector<int> a, 但是map[n] 会根据n的大小进行自动排序。n可以为int, 也可以是string等其他类型,这是数组做不到的。后续做到字符串的题时我们会用到这个特性。

 创建一个空map, 并遍历一遍数组。每次都在map中找,是否有相应的数字,如果没有就把数字和对应下标加进map里,进行下一个数字的查找。

为什么不干脆先把所有的数字和下标全存进map再进行查找,而是先建立空map再一个一个的把不符话的数字存进map呢?

因为题目说了,不能包括自己。如果全部先存进map,那么遇到5+5=10这种情况,即使只有1个5,它仍然遍历成功,因为确实找到了5呀,所以为了避免这种情况,每次都先查找再加入当前数字,保证当前这个数字不会被查找到。


题解:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map <int,int> map;
        for(int i = 0; i < nums.size(); i++) {
            // 遍历当前元素,并在map中寻找是否有匹配的key
            auto iter = map.find(target - nums[i]); 
            if(iter != map.end()) {
                return {iter->second, i};
            }
            // 如果没找到匹配对,就把访问过的元素和下标加入到map中
            map.insert(pair<int, int>(nums[i], i)); 
        }
        return {};
    }
};

欢迎点赞,收藏,评论,你的鼓励就是我创作的最大动力!(๑╹◡╹)ノ"""

版权声明:本文为CSDN博主「渡梦酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:渡梦酒的博客_CSDN博客-csdn领域博主

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/639464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Telerik Report Server R2 2023

Telerik Report Server R2 2023 仪表报告项-使用仪表或类似表盘的显示提供数据的可视化表示。 报告项上的AccessibleRole属性-ARIA(可访问的富Internet应用程序)支持已显著改进。在Web上&#xff0c;当启用了辅助功能时&#xff0c;呈现的报表项包含预定义的辅助功能角色。这样…

(七)矢量数据的空间分析——叠置分析①

矢量数据的空间分析——叠置分析 叠置分析是将代表不同主题的各个数据层面进行叠置&#xff0c;产生一个新的数据层面&#xff0c;叠置结果综合了原来两个或多个层面要素所具有的属性。 叠置分析不仅生成了新的空间关系&#xff0c;而且还将输入的多个数据层的属性联系起来产…

随机的乐趣和游戏

1、猜数字游戏 #GuessingGame.py import random the_number random.randint(1, 10) print("计算机已经在1到10之间随机生成了一个数字&#xff0c;") guess int(input("请你猜猜是哪一个数字: ")) while guess ! the_number:if guess > the_number:p…

【MySQL】数据库基本知识小结

数据库的基本概念 数据库&#xff1a;DataBase 简称 DB&#xff0c;就是信息的集合或者说数据库是由数据库管理系统管理的数据的集合。数据库管理系统&#xff1a;DataBase Management System 简称 DBMS&#xff0c;是一种操纵和管理数据库的大型软件&#xff0c;通常用于建立…

数据结构 一绪论

第一章&#xff1a;绪论 1.1数据结构的基本概念 1.数据&#xff1a;数据是信息的载体&#xff0c;是描述客观事物属性的数、字符以及所有能输入到计算机中并被程序识别 和处理的符号的集合。 2.数据元素&#xff1a;数据元素是数据的基本单位&#xff0c;通常作为一个整体进行…

软件项目质量跟踪控制的3大方法

1、质量度量法 质量度量法包括尺度度量和二元度量两种方法&#xff0c;而尺度度量是定量度量&#xff0c;适用可直接度量的特性。如缺陷率 而二元度量是定性度量&#xff0c;适用间接度量的质量特性。如使用性&#xff0c;灵活性。 软件项目质量跟踪控制的3大方法&#xff1a;质…

ReentrantLock实现原理-公平锁

在ReentrantLock实现原理(1)一节中&#xff0c;我们了解了ReentrantLock非公平锁的获取流程&#xff0c;在本节中我们来看下ReentrantLock公平锁的创建以及锁管理流程 创建ReentrantLock公平锁 创建公平锁代码如下&#xff1a; ReentrantLock reentrantLock new ReentrantL…

elementui 自定义loading动画加载层

elementui 自定义loading动画加载层。main.js中添加 import { Loading } from element-ui /* 自定义加载层 */ Vue.prototype.openLoading function(wer) {const loading Loading.service({lock: true, // 是否锁屏text: , // 加载动画的文字// spinner: inner-circles-loade…

数据库期末复习(8)并发控制

笔记 数据库DBMS并发控制(1)_旅僧的博客-CSDN博客 数据库 并发控制(2)死锁和意向锁_旅僧的博客-CSDN博客 冲突可串行化和锁 怎么判断是否可以进行冲突可串行化:简便的方法是优先图 只有不同对象和同一对象都是读才不能发生非串行化调度。我真傻 两个节点其实也可以算是一…

粤海街道后海村城市更新单元旧改项目,规划建面约42.6万平

项目名称&#xff1a;粤海街道后海村城市更新单元 项目地址&#xff1a;南山区粤海街道&#xff0c;西临天后西路&#xff0c;东至后海大道&#xff0c;南近东滨路&#xff0c;北近创业路。 开发商&#xff1a;远洋集团 申报主体&#xff1a;深圳市蛇口后海实业股份公司 拆…

SEMICON China 2023| 加速科技将携全系新品重磅亮相,欢迎打卡加速科技展台

2023年6月29日-7月1日&#xff0c;全球规模最大、规格最高的半导体行业盛会—SEMICON China 2023将在上海新国际博览中心盛大举行。作为业内领先的半导体测试设备供应商&#xff0c;杭州加速科技将携全系重磅新品及全系列测试解决方案受邀参展。 展位信息&#xff1a;E5馆 5643…

pytest+allure+jenkins持续集成及生成测试报告

目录 前言 一、jenkins安装 二、插件安装 三、构建项目 四、查看运行结果 总结&#xff1a; 前言 前面&#xff0c;讲了“Pycharmpytestallure打造高逼格的测试报告”&#xff0c;但实际工作中&#xff0c;往往需要通过jenkins进行自动化测试用例的持续集成并自动生成测试…

KW 喜报 | KaiwuDB 斩获 2023 数博会“优秀科技成果”奖

5月26日&#xff0c;大数据领域的国家级盛会——2023 中国国际大数据产业博览会&#xff08;以下简称“2023 数博会”&#xff09;在贵阳盛大开幕。作为大会最重磅的环节之一&#xff0c;“2023 领先科技成果发布会”于数博发布中心场地举办&#xff0c;向全行业发布 70 余项兼…

数据脱敏/换行/枚举的处理【EasyPoi实战系列】- 第474篇

历史文章&#xff08;文章累计460&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 【…

DDP分布式训练中遇到的一些问题

1&#xff1a;所有forward的输出必须参与到loss计算并回传 2&#xff1a;类似于layer_norm这样的操作是无需进行分布式通信的&#xff0c;也无法进行分布式通信&#xff0c;所以在DDP的时候必须把find_unused_parameters设置为True 3&#xff1a;当报错形式为如下时&#xff…

C语言之指针初阶(2)

目录 1. 指针是什么 2. 指针和指针类型 3. 野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 上次我们已经把前4个部分给大家讲完了&#xff0c;现在我们来讲一下后面三个部分 首先看数组和指针 指针和数组之间是什么关系呢&#xff1f; 指针变量就是指针变量&…

ELF文件结构和实战分析

文章目录 示例编译运行 ELF文件格式ELF HeaderELF Section Header Table (节头表)sh_typesh_flagssh_link、sh_info 节链接信息 ELF Sections节的分类.text节.rodata节.plt节&#xff08;过程链接表&#xff09;.data节.bss节.got.plt节&#xff08;全局偏移表-过程链接表&…

小黑和阿黄骑车逛了逛河堤,今天练完钢琴小汤3第5课后和小老黑吃拉面夜里准备天津小黄车骑行的leetcode之旅:567. 字符串的排列

小黑代码 class Solution:def checkInclusion(self, s1: str, s2: str) -> bool:# s1与s2的长度n_s1 len(s1)n_s2 len(s2)# 非法情况if n_s1 > n_s2:return False# 初始化差值向量count [0] * 26# 判断初始状态是否成立for i in range(n_s1):count[ord(s1[i])-97] - …

MySQL数据库 --- 高级篇

一、存储引擎 1.1、MySQL体系结构 1.1.1、连接层 最上层是一些客户端和链接服务&#xff0c;包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念&#xff0c;为…

Mybatis-Plus中update更新操作用法

目录 一、前言二、update1、关于修改的4个条件构造器2、UpdateWrapper【用法示例】3、LambdaUpdateWrapper【用法示例】4、UpdateChainWrapper【 用法示例】5、LambdaUpdateChainWrapper【 用法示例】6、updateById 和 updateBatchById7、Mybatis-plus设置某个字段值为null的方…