代码随想录day6| 242.有效的字母异位词 、349. 两个数组的交集、 202. 快乐数 、 1. 两数之和

server/2024/10/21 18:43:43/

代码随想录day6| 242.有效的字母异位词 、349. 两个数组的交集、 202. 快乐数 、 1. 两数之和

  • 242.有效的字母异位词
    • 思路
    • 步骤
  • 349. 两个数组的交集
    • 思路
    • 步骤
  • 202. 快乐数
    • 思路
    • 步骤
  • 1. 两数之和
    • 思路
    • 步骤

242.有效的字母异位词

思路

  • 使用暴力解法时间复杂度为O(n^2)
  • 这道题需要判断字母之前是否出现过,所以使用哈希法
  • 由于字符使用asc||可以找出连续的规律(a=97),故可以使用数组来存放字母出现过的次数

步骤

  • 先判断两个字符串长度是否相同,不同直接返回false;
  • 创建一个长度为26的数组,来存放26个字母出现的次数
  • 遍历字符串长度,第一个字符串出现的字母对应的位置每次加一;另一个字符串字母出现的位置每次减一
  • 最后遍历数组,如果有位置不等于0,则返回false
  • 数组中都为0,则返回true;
class Solution {public boolean isAnagram(String s, String t) {if(s.length() != t.length()){return false;}int[] arr = new int[26];for(int i = 0 ; i < s.length() ; i++){// System.out.print(s.charAt(i) - 97 + " ");arr[s.charAt(i) - 97]++;arr[t.charAt(i) - 97]--;}for(int i = 0 ; i < arr.length ; i++){System.out.print(arr[i] + " ");if(arr[i] != 0){return false;}}return true;}
}

349. 两个数组的交集

思路

  • 改题目需要去重(交集结果中不能有重复数字),且返回不考虑输出结果的顺序,所以可以使用哈希法中的set集合

步骤

  • 新建两个set集合,一个用来给nums1数组去重,另一个收集两个数组的交集
  • 遍历nums1去重,收集在set1中
  • 遍历nums2,如果set1中包含在元素,添加到resSet集合中
  • 最后将收集的resSet转换为数组返回
class Solution {public int[] intersection(int[] nums1, int[] nums2) {Set<Integer> set1 = new HashSet<>();Set<Integer> resSet = new HashSet<>();//遍历数组1for (int i : nums1) {set1.add(i);}//遍历数组2的过程中判断哈希表中是否存在该元素for (int i : nums2) {if (set1.contains(i)) {resSet.add(i);}}return resSet.stream().mapToInt(x -> x).toArray();}}

202. 快乐数

思路

  • 题目中说了会 无限循环,那么也就是说求和的过程中,sum会重复出现,这是无限循环结束的条件
  • 判断是否重复出现可以使用set集合
  • 具体思路

步骤

  • 创建一个set集合判断是否重复
  • 用while循环来寻找是否有符合的值,当n!=1并且n没有重复时就一直循环。
  • 进入循环将n加入到set中,开始判断是否时快乐书操作,并且并且更新n的值。
  • 循环结束判断n是否为1(是否为快乐数)
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;}
}

1. 两数之和

思路

图文思路

步骤

  • 创建一个map集合,key存放可能会被匹配的数,value中方这个数在数组中的位置。
  • 用for循环来遍历数组,如果当前元素的能够匹配的数不在集合map中,则把该数放到map中,供其他数匹配
  • 如果在map中找到能够匹配的数,则把这两个数的位置放到数组中返回
class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> map = new HashMap();int[] arr = new int[2];for(int i = 0 ; i < nums.length ; i++){if(map.containsKey(target-nums[i])){arr[0] = i;arr[1] = map.get(target-nums[i]);break;}map.put(nums[i],i);}return arr;}
}

http://www.ppmy.cn/server/133694.html

相关文章

【机器学习基础】全连接层

1. 定义: 每一个节点都跟其后面所有的神经元相连两层之间所有神经元都有权重连接,通常全连接层在卷积神经网络尾部也就是跟传统的神经网络神经元的连接方式是一样的 2. 作用: 全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、…

IP- guard产品版本升级指引详解

一、IP-guard服务器升级步骤 1、下载升级包(IPgUpgrade版本号.zip) 到IP-guard服务器 2、解压升级包,右键以管理员身份运行 (1)“升级包”解压 (2)右键以管理员身份运行“升级包” ࿰

第十五届蓝桥杯Java大学b组(解)

1.报数游戏 思路&#xff1a; 第1-10个&#xff1a; 20 24 40 48 60 72 80 96 100 120 第11-20个&#xff1a;140 144 160 168 180 192 200 216 220 240 第21-30个&#xff1a;260 264 280 288 300 312 320 336 340 360 第31-40个&#xff1a;380 384 400 408 420 432 440 …

Spring Boot实现的电影评论系统开发

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理电影评论网站的相关信息成为必然。开发合适…

深度解析 Redis 存储结构及其高效性背后的机制

目录 1. Redis 存储结构存储结构存储转换 2. 字典实现数据结构冲突处理负载因子 3. 扩容扩容步骤影响与优化 4. 缩容缩容步骤优化策略 5. 渐进式 Rehash**渐进式 Rehash 的工作原理**Rehash 规则优势 6. SCAN 命令SCAN 的实现原理遍历顺序避免重复和遗漏使用场景 7. 过期&#…

实战RAG第一天——llama_index向量索引,查询引擎,搜索知识库问答,全部代码,保姆级教学

一、llama_index简介 llama_index(以前称为 GPT Index)是一个用于构建、查询、索引大型文档和数据集的开源框架。它的核心功能是帮助开发者将大语言模型(LLM)与自己的数据集无缝集成,从而进行知识库的构建、查询等任务。llama_index 使用 Python 编写,并结合了多种大语言…

Github学生包的JetBrains认证过期/idea认证过期如何解决?

官网通过Github更新状态即可JetBrains Account 注意要到邮箱走流程

Oracle+11g+笔记(7)-数据库空间管理

Oracle11g笔记(7)-数据库空间管理 7、数据库空间管理 存储空间是数据库系统中非常重要的资源&#xff0c;无论是数据库中的对象还是数据库中的数据都需要空间进行存储&#xff0c;一旦 数据库空间被全部占用&#xff0c;那么该数据库系统就不能再接受任何对象和数据&#xf…