代码随想录算法训练营第五天|LeetCode 242,349,202,1

【Tessent Shell Users Manual】【Ch3】Design Introspection and Editing(未完待续) Tessent Shell 提供了一系列用于检查(examining/introspecting)和编辑design的命令。 阅读详情

目录

前言:哈希表理论基础

LeetCode 242.有效字母异位词

LeetCode 349.两个数组的交集 

LeetCode 202. 快乐数

LeetCode 1.两数之和


前言:哈希表理论基础

文章讲解:代码随想录

概念:

哈希函数:通过某种方式,把值转化为索引。

哈希表:根据关键码的值而直接进行访问的数据结构。

哈希碰撞:通过哈希函数之后,有元素映射到同一个位置。

  • 哈希碰撞的处理方法:
  • 拉链法:当元素映射到同一个位置时,在相应的位置存储到链表中。
  • 线性探测法:前提是要保证tableSize大于dataSize,当元素映射到同一个位置时,向下找有空的位置。

 LeetCode 242.有效字母异位词

文章讲解:代码随想录

视频讲解:学透哈希表,数组使用有技巧!Leetcode:242.有效的字母异位词_哔哩哔哩_bilibili

力扣题目: LeetCode 242.有效字母异位词

        

 题目分析:首先了解字母异位词的定义,我们可以有个初步的了解,如果是字母异位词,字符串s中的每个字符个数一定是与字符串t中的每个字符个数相等的。所以我们可以先把字符串s中每个字符出现的次数定义在一个以26个字符长度的数组当中。接着在看字符串t中的每个字符的个数如果是与字符串s中每个字符的个数相对应的话, 那么定义的数组当中的元素就会全部为0。

代码如下(Java):代码随想录

class Solution {
    public boolean isAnagram(String s, String t) {

        //定义一个长度位26的数组,每个位置代表一个字母
        int[] record = new int[26];

        //遍历字符串s,找到相对于的字母,并且每找到相对于的字母,就在字母的位置山加1
        for(int i = 0; i < s.length(); i++){
            record[s.charAt(i) - 'a']++;
        }

        //同上
        for(int j = 0; j < t.length(); j++){
            record[t.charAt(j) - 'a']--;
        }

        //遍历数组,若数组中还有元素不为0
        //就意味着两个字符串中的字符数量不匹配
        for(int count : record){
            if(count != 0){
                return false;
            }
        }

        return true;

    }
}

总结:通过数组下标来模拟a~z,数组中的元素来模拟字母出现的次数,再根据题目的逻辑(字母异位词的定义)即可解决该题目。


LeetCode 349.两个数组的交集 

文章讲解:代码随想录

视频讲解:学透哈希表,set使用有技巧!Leetcode:349. 两个数组的交集_哔哩哔哩_bilibili

力扣题目:力扣

 

 题目分析:比较两个数组之间是否存在着连续相同的元素,输出结果要做去重处理但是顺序不做要求。

代码如下(Java):代码随想录

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {

        if(nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0){
            return new int[0];
        }

        Set<Integer> set1 = new HashSet<>();
        Set<Integer> resSet = new HashSet<>();

        for(int i : nums1){
            set1.add(i);
        }

        for(int i : nums2){
            if(set1.contains(i)){
                resSet.add(i);
            }
        }

 //       return resSet.stream().mapToInt(x -> x).toArray();

        int[] arr = new int[resSet.size()];
        int j = 0;
        for(int i : resSet){
            arr[j++] = i;
        }

        return arr;

    }
}

 总结:因为题目返回的结果要求是去重的,但是顺序不做要求。基于这个条件下,我们可以先把其中一个数组做去重的操作,然后比较另一个也去重的数组,若两个数组之间有重复的元素,则代表有相同交集且已经做了去重的操作。


LeetCode 202. 快乐数

文章讲解:代码随想录

力扣题目:LeetCode 202. 快乐数

题目分析:快乐数的定义很容易理解,根据定义结果最后为1即为快乐数,但如果不是快乐数,就会无限循环,那么在这个过程中程序如何才知道这不是一个快乐数,需要有一个东西来判定不是快乐数,否则一直死循环且不知道结果。

代码如下(Java):代码随想录

class Solution {
    public boolean isHappy(int n) {

        Set<Integer> record = new HashSet<>();

        while(n != 1 && !record.contains(n)){
            record.add(n);
            n = getNextNumber(n);
        }

        return n == 1;
    }

    private int getNextNumber(int n){

        int res = 0;

        while(n > 0){
            int temp = n % 10;
            res += temp * temp;
            n = n / 10;
        }
        
        return res;
    }
}

LeetCode 1.两数之和

文章讲解:代码随想录

视频讲解:梦开始的地方,Leetcode:1.两数之和,学透哈希表,map使用有技巧!_哔哩哔哩_bilibili

力扣题目:LeetCode 1.两数之和

 题目分析:第一种方法可以是使用暴力解法,直接套两个for循环即可,时间复杂度为O(n²)。第二种使用哈希表来解决,当我们需要判断一个元素是否出现在集合当中的时候,就可以考虑哈希法。在哈希法中,我们又得考虑三中方法来实现哈希法,分别为:数组,set以及map。在这道题中,我们需要判断元素是否存在以及返回相对于的下标,需要两个条件,而此时map中的key对应判断元素是否存在,value对应返回的元素的下标,符合我们对该题目的要求。

暴力代码如下(Java):

class Solution {
    public int[] twoSum(int[] nums, int target) {

        int[] res = new int[2];
        int start = 0;
        int end = 1;
        int sign = 0;

        for(int i = 0; i < nums.length; i++){
            for(int j = i + 1; j < nums.length; j++){
                if(nums[i] + nums[j] == target){
                    res[start] = i;
                    res[end] = j;
                    sign = 1;
                    break;
                }
            }
            if(sign == 1){
                break;
            }
        }

        return res;
    }
}

map代码如下(Java):

class Solution {
    public int[] twoSum(int[] nums, int target) {

        int[] res = new int[2];

        if(nums == null || nums.length == 0){
            return res;
        }

        Map<Integer, Integer> map = new HashMap<>();

        for(int i = 0; i < nums.length; i++){
            int temp = target - nums[i];
            if(map.containsKey(temp)){
                res[1] = i;
                res[0] = map.get(temp);
                break;
            }

            map.put(nums[i], i);
        }

        return res;
        
    }
}

DA14531之如何Debug(在线调试、Jlink仿真、串口打印) 在线调试和串口打印调试。在线调试是Keil软件配合Jlink编译、烧录、仿真为一体的,其操作包括:运行、停止、打断点,单步运行等。而串口打印调试,只需打开相关配置,让arch_printf()函数正常输出串口数据。若想在初始化完成后打印arch_printf(“goto Loop\r\n”);波特率为115200,接收到串口消息goto Loop。连好线后,点击仿真按钮,在线Jlink调试。 阅读详情

相关推荐

pytorch转onnx转paddlepaddle

1.pt转onnx 可查看我之前的文章:https://blog.youkuaiyun.com/oyjwin/article/details/117778583?spm=1001.2014.3001.5501

oyjwin的博客 1461

代码随想录算法训练营第五天|力扣242,349,202,1

总结:核心思路就是要想明白什么时候会出现循环,出现循环的处理逻辑,这里要保存每次计算的结果,如果接下来有一次的结果和之前的结果相同,那么就是出现循环了,这样就不可能是快乐数了。总结:数组适合于限制范围的统计次数,这里无范围限制,所有考虑用set。总结:由于都是小写字母,定义一个数组统计字母出现的次数即可。242有效的字母异位词。349两个数组的交集。

clancy_duck的博客 132

LabVIEW数据采集-数字I/O/计数器

labview 数据采集 数字I/O 计数器

weixin_43781045的博客 5619

代码随想录算法训练营第五天 | LeetCode242.有效的字母异位词、LeetCode349.两个数组的交集、LeetCode202.快乐数、LeetCode1.两数之和

其实我想到了字母的特殊之处(连续的ASCII码),也想到了用数组存储字母出现的次数,进行比对的过程我想用两个数组的,但不太清楚c++怎么处理字符串(脑中里全是strcat之流,纯纯被c语言毒害了),再者不清楚c++的其他map、set的写法,索性先看录哥的讲解再写代码。:第一想法是以数组为哈希表的载体,数组nums1中出现过的数记为1,然后再遍历一遍nums2,找到记为1的放在集合中,即为交集。:c++查询字符串可以通过括号下标来索引、两字符相减可以得到ascii码的差、在原数组上进行操作可以直接比对。

zhuabazhuabahuo的博客 835

macOS 27下PlayCover“没有权限打开”的完整修复指南

macOS系统通过Gatekeeper、TCC(透明、同意与控制)和安全启动等机制,对第三方应用进行层层校验,以防范恶意代码。这些机制会检查应用的隔离属性、签名状态以及所需系统权限,当任一环节不满足时,就会出现“没有权限打开”的提示。对于开发者工具或未上架App Store的开源软件,这类拦截尤为常见。尤其在macOS 27上,系统进一步收紧了绕过策略,导致PlayCover等工具无法正常启动。本文以PlayCover为例,详细解析权限链路上的三道关卡,并给出清除隔离属性、调整SIP状态、重置TCC记录等完

weixin_32612263的博客 750

AI上推荐 之 逻辑回归模型与GBDT+LR(特征工程模型化的开端)

1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息? 信息生产者:如何让自己生产的信息脱颖而出, 受到广大用户的关注? 为了解决这个矛盾, 推荐系统应时而生, 并飞速前进,在用户和信息之间架起了一道桥梁,一方面帮助用户发现对自己有价值的信息, 一方面让信息能够展现在对它感兴趣的用户前面。 推荐系统近几年有了深度学习的助推发展之势迅猛, 从前深度学习的传统推荐模型(协

Miracle8070 8253

代码随想录算法训练营第五天|哈希表part01

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false。

欢迎光临花开富贵的博客 860

2025.06.16【转录组】|Ribo-seq数据流程详解(二 基因组比对)

本文详细介绍了Ribo-seq数据分析中的比对流程,包括环境准备、STAR索引构建、比对参数设置及结果统计可视化。通过samtools和R脚本实现比对质量评估,提供常见问题解决方案和关键指标解读。该流程强调比对参数优化和质量控制,为后续翻译组学分析奠定基础。

1980

代码随想录算法训练营|一刷总结与反思

一刷代码随想录正式结束,之前没有系统的学习过,甚至没有刷过力扣题,第一次刷的题采用的先看卡哥的视频然后再试着自己敲一遍代码的方式,中间还有一些题目看完之后写代码也仍然有不少问题,就跟着代码随想录的“参考代码”敲了一遍。断断续续花了两个月,终于成功的完成了代码随想录的一刷。总共刷的内容有:数组、链表、哈希表、字符串、双指针法、栈与队列、二叉树、回溯算法、贪心算法、动态规划、单调栈。

weixin_47748259的博客 1515

面向可扩展的 ABAP CDS:EXTEND VIEW 全面实战与工程化指引

摘要: 本文深入讲解ABAP CDS的EXTEND VIEW功能,帮助开发者在标准或自建模型上安全扩展字段与关联。核心内容包括: 作用:避免直接修改标准CDS,通过轻量扩展添加业务字段和关联,降低维护风险。 语法要点:需定义CDS扩展实体名和Dictionary Append View名,支持添加普通字段、关联,但不允许聚合或修改原有结构。 限制:不能扩展含聚合、UNION的视图,且扩展字段需避免命名冲突。 工程实践:建议使用客户命名空间,区分结构扩展与元数据扩展,并注意功能性变更需通过其他方式实现。 示例

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 396

LeRobot 官方论文:一个用于端到端机器人学习的开源库

本文介绍了一个名为LeRobot的开源库,旨在解决机器人学习领域的碎片化问题。该库提供了端到端的技术栈,包括统一的机器人中间件API、标准化的数据集格式(LeRobotDataset)、优化的推理栈以及多种最先进机器人学习算法的实现。LeRobot支持多种低成本开源机器人平台(如SO-10X、ALOHA-2等),通过共享中间件实现便捷的遥操作和数据收集。其数据集格式已广泛应用于社区,截至2025年9月已有16,000多个数据集公开共享。该库还支持流式处理大规模数据,降低了研究门槛。在模型方面,LeRobot

2506_90492529的博客 907

代码随想录算法训练营第五天|Leetcode1. 两数之和,349. 两个数组的交集242.有效的字母异位词 202. 快乐数(内含Hash知识点详解)

哈希数组更加适用于频繁查找和计数统计的操作,我们来看思路,我们创建两个hash数组,将两个输入数组中的值分别存入哈希数组中,这样数组的索引作为键,数组的值作为计数次数,然后我们得到了两个哈希数组,只要判断相同索引的两个哈希数组的值是否都大于0就行,如果都大于0,就说明这个元素是重复的,我们再创建一个动态数组吗,因为具备扩容的功能等,但是最后返回的时候还是需要创建一个普通数组,因为题目要求的返回方法是int,我们来看代码。建议大家先看视频讲解,然后尝试自己写代码,在看文章讲解,加深印象。

xuziang13的博客 1018

redhawk:使用rh_setup.pl产生gsr模板

必须加的option工具会在rh_setup.pl给出提示,按照要求填写即可,另外工具会把所有填写的输入文件和信息放到rh_setup.init文件中,拷贝这个文件可在任何平级运行目录下,直接rh_setup.pl产生gsr以及run sta/dyn/em的脚本。rhsetup.pl -top top_cell_name -vdd_nets VDD 1.2 VDD2 1.2 -vss_nets VSS -frequency 100e6 (100m是默认值)更多学习内容请关注「拾陆楼」知识星球。

m0_61544122的博客 1055

代码随想录算法训练营第5天|● 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ●202. 快乐数● 1. 两数之和

● 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ●202. 快乐数● 1. 两数之和hashtable可以用数组,集合set或者映射map来表示。使用map容器可以事半功背。

qq_36771396的博客 1709

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

代码随想录算法训练营第二十九天|1005.K次取反后最大化的数组和,134. 加油站,135. 分发糖果

在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。给定两个整数数组 gas 和 cost ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:选择某个下标 i 并将 nums[i] 替换为 -nums[i]。

weixin_47748259的博客 966

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

代码随想录算法训练营第三十四天|62.不同路径,63. 不同路径 II

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。确定dp数组(dp table)以及下标的含义:dp[i][j]表示从(0,0)出发,到(i, j) 有dp[i][j]条不同的路径。确定递推公式:dp[i][j] = dp[i - 1][j] + dp[i][j - 1]

weixin_47748259的博客 1763

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

代码随想录算法训练营第九天|理论基础,232.用栈实现队列,225. 用队列实现栈

队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾;int pop() 从队列的开头移除并返回元素;请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。int top() 返回栈顶元素;核心思想:一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。

weixin_47748259的博客 1089

代码随想录算法训练营第五十二天|84.柱状图中最大的矩形,完结撒花✿✿ヽ(°▽°)ノ✿

给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素。数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。本题和42. 接雨水 (opens new window),是遥相呼应的两道题,接雨水是求外,柱状图中最大的矩形是求内。

weixin_47748259的博客 1227

代码随想录算法训练营day06|LeetCode 242,LeetCode 349,LeetCode 202,LeetCode 1

今天主要学习了哈希表的一系列操作,复习了一下set,map还有STL的用法!受益颇多!继续加油!加油,坚持打卡的第六天。

qq_44639909的博客 1264

代码随想录算法训练营第五天:哈希表的初步认识[1]

我们已经学习了数组、字符串、链表等数据结构,但是大家有没有发现,如果我们想要找到其中某个元素或者节点,需要从索引为0的位置或者表头开始,逐一进行比较,直到找到相等的位置或者末尾才会结束。那是否可以避免之前的比较,直接通过要查找的记录直接找到其存储位置呢?是有的,可以通过“哈希表”来实现,哈希表是根据关键码​​key​​的值而直接进行访问的数据结构。哈希表的作用是快速判断一个元素是否出现在集合里,它的核心思想是在关键码和存储位置之间建立一个确定的对应关系f​, 使得每个关键字key。

2302_79934729的博客 878

代码随想录算法训练营第二十三天|39. 组合总和,40.组合总和II,131.分割回文串

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。如果至少一个数字的被选数量不同,则两种组合是不同的。给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次。核心问题是去重,而且是树层去重而不是树枝去重;

weixin_47748259的博客 1317

代码随想录算法训练营第五天 242. 有效的字母异位词 、349. 两个数组的交集、202题. 快乐数 、1. 两数之和

今日题目都较为简单,直接上备注后的代码,关于哈希表明天再总结。

weixin_45073603的博客 409

代码随想录算法训练营第六天|LeetCode242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和

打卡代码随想录算法训练营第49期第六天~( ̄▽ ̄~)(~ ̄▽ ̄)~第五天放假哦首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站。

tancxiaohei23的博客 1053

代码随想录算法训练营第五天 | 哈希表242,349,202,1

用哈希表判断一个元素是否出现过。

weixin_52414012的博客 262

代码随想录算法训练营第五天|leetcode1、202、242、349题

该题可采用双重for循环的暴力算法,但所用时间较多,这里考虑到既要存储数组中的元素值,还要存储数组元素的下标,这是普通数组和set结构不具有的功能,故采用map结构,将数组中的元素值设为key值,元素下标设为value值。本题要求两个数组相交的部分,需要注意的是可能有多个相同的元素此时只输出一个,如果采用哈希表中的set结构就不需要额外的判断是否多个元素相同,如果采用与上题类似的数组结构则需要每次对数组中相应的元素重置处理多个元素相同的问题,下面给出两种方式的代码。

m0_74934708的博客 2293

代码随想录算法训练营第六天 | 242.有效的字母异位词 349.两个数组的交集 202.快乐数 1.两数之和

然后判断是否为快乐数,新建一个unordered_set哈希结构存放每次正整数各个位置的平方和,如果sum=1就是快乐数,sum重复出现会陷入无限循环不是快乐数,sum为没有出现过的数新加入result中记录。步骤二:用nums2做查询操作,再用nums2遍历每一个元素去查询哈希表里,看有没有在哈希表中出现过,如果出现过放到result集合里(result集合是去重的)把遍历过的元素加到一个集合里,每次遍历一个新的位置之后,判断想要寻找的元素是否在集合里出现过。题目链接:​​​​​​​。

m0_50413530的博客 1146
上一篇: 代码随想录算法训练营第四天|LeetCode 24,19, 面试题 02.07,142
下一篇: 代码随想录算法训练营第六天|LeetCode 454,383,15,18
iwtup
博客等级 码龄8年 2粉丝 54原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值