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

本文主要是介绍代码随想录算法训练营第六天| 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

242.有效的字母异位词

在这里插入图片描述

题目链接: 203.移除链表元素
文档讲解:代码随想录
状态:so easy

思路:使用计数器数组统计字符串中字符出现频率。

题解

public boolean isAnagram(String s, String t) {// 将输入的字符串s转换为字符数组char[] sChars = s.toCharArray();// 将输入的字符串t转换为字符数组char[] tChars = t.toCharArray();// 初始化一个大小为26的数组,用于计数字符出现的次数// 由于只有小写字母,所以数组大小为26,索引0对应字符'a',索引25对应字符'z'int[] counter = new int[26];// 遍历字符串s的字符数组for (char c : sChars) {// 将字符转换为0到25的索引,并在对应位置的计数器增加1counter[c - 'a']++;}// 遍历字符串t的字符数组for (char c : tChars) {// 将字符转换为0到25的索引,并在对应位置的计数器减少1counter[c - 'a']--;}// 遍历计数器数组,检查是否有任何计数不为0for (int i : counter) {// 如果任何计数器的值不为0,则说明s和t不是变位词,返回falseif (i != 0) {return false;}}// 如果所有计数器的值都为0,则说明s和t是变位词,返回truereturn true;
}

349. 两个数组的交集

在这里插入图片描述

题目链接:349. 两个数组的交集
文档讲解:代码随想录
状态:so easy

思路:首先使用一个计数器数组来记录 nums1 中每个元素的出现次数。然后,它检查 nums2 中的每个元素,如果该元素在 nums1 中出现过(即计数器数组中对应的值大于0),则将该元素在计数器数组中的值设置为 -1。之后,它遍历计数器数组,将所有值为 -1 的元素(即两个数组共有的元素)收集到一个 ArrayList 中。最后,将 ArrayList 中的元素复制到一个新的整型数组中,并返回这个数组。

题解:

public int[] intersection(int[] nums1, int[] nums2) {// 初始化一个大小为1001的计数器数组,用于存储每个数字的出现次数// 数组的大小可以根据实际需要调整,这里假设输入数组中的元素不会超过1000int[] counter = new int[1001];// 遍历数组nums1,对每个元素在计数器数组中对应的位置增加1for (int i : nums1) {counter[i]++;}// 遍历数组nums2,检查计数器数组中对应位置的值// 如果该位置的值大于0,说明此元素在nums1中出现过,将其设置为-1// 这里使用-1来标记nums1和nums2共有的元素for (int i : nums2) {if (counter[i] > 0) {counter[i] = -1;}}// 创建一个ArrayList,用于存储共有元素ArrayList<Integer> list = new ArrayList<>();// 遍历计数器数组,找出所有值为-1的元素,即nums1和nums2共有的元素for (int i = 0; i < counter.length; i++) {if (counter[i] == -1) {list.add(i);}}// 创建一个数组,大小为共有元素的个数int[] ans = new int[list.size()];// 初始化一个索引i,用于在ans数组中添加元素int i = 0;// 遍历ArrayList,将共有元素添加到ans数组中for (Integer integer : list) {ans[i++] = integer;}// 返回包含共有元素的数组return ans;
}

202. 快乐数

在这里插入图片描述

题目链接:202. 快乐数
文档讲解:代码随想录
状态:so easy

思路:通过使用一个 HashSet 来记录已经遍历过的数字,避免无限循环。如果数字 n 等于1,那么它是一个快乐数。

题解:

public boolean isHappy(int n) {// 创建一个HashSet,用于存储已经遍历过的数字HashSet<Integer> set = new HashSet<>();// 使用while循环进行操作,条件是当前数字n不在set中while (!set.contains(n)) {// 如果n等于1,根据快乐数的定义,返回trueif (n == 1)return true;// 将当前数字n添加到set中,避免重复遍历set.add(n);// 调用getNum方法,计算n的下一个状态n = getNum(n);}// 如果循环结束,说明已经检测到循环,根据快乐数的定义,返回falsereturn false;
}public int getNum(int n) {int sum = 0;// 使用while循环,直到n变为0while (n != 0) {// 计算n的最后一位数字的平方,然后加到sum上sum += Math.pow(n % 10, 2);// 将n除以10并取整,去掉最后一位数字n /= 10;}// 返回计算得到的sumreturn sum;
}

1. 两数之和

在这里插入图片描述

题目链接: 1. 两数之和
文档讲解:代码随想录
状态:卡了一会儿,刚开始把所有的元素加入到HashMap中,然后再次遍历数组的时候去HashMap中找是否存在补数,这种方法没有考虑到重复元素的问题

题解:

    public int[] twoSum(int[] nums, int target) {// 创建一个HashMap,用于存储遍历过的数字及其索引HashMap<Integer, Integer> map = new HashMap<>();// 初始化一个长度为2的数组,用于存储两个数的索引int[] res = new int[2];// 遍历数组nums中的每个元素for (int i = 0; i < nums.length; i++) {// 检查map中是否存在当前元素的补数Integer val = map.get(target - nums[i]);// 如果map中存在当前元素的补数(即target - nums[i])if (val != null) {// 将补数的索引赋值给res[0]res[0] = val;// 将当前元素的索引i赋值给res[1]res[1] = i;// 返回包含两个数索引的数组return res;}// 将当前元素及其索引存入map中map.put(nums[i], i);}return res;}

这篇关于代码随想录算法训练营第六天| 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1008581

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav