【算法刷题day6】Leetcode:242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

文章目录

    • Leetcode 242. 有效的字母异位词
      • 解题思路
      • 代码
      • 总结
    • Leetcode 349. 两个数组的交集
      • 解题思路
      • 代码
      • 总结
    • Leetcode 202. 快乐数
      • 解题思路
      • 代码
      • 总结
    • Leetcode 1. 两数之和
      • 解题思路
      • 代码
      • 总结
    • HashSet基本使用:
    • HashMap基本使用:

草稿图网站
java的Deque

Leetcode 242. 有效的字母异位词

题目:242. 有效的字母异位词
解析:2.5 练习时长两年半

解题思路

使用长度为26的数组作为hash数组。

代码

class Solution {public boolean isAnagram(String s, String t) {int[] record = new int[26];for (char c : s.toCharArray())record[c - 'a']++;for (char c : t.toCharArray())record[c - 'a']--;for (int i = 0; i < record.length; i++)if (record[i] != 0)return false;return true;     }
}

总结

暂无

Leetcode 349. 两个数组的交集

题目:349. 两个数组的交集
解析:2.5 练习时长两年半

解题思路

使用Hash数组,整体方法同上题,额外使用ArrayList来动态存储结果,最终转化为数组返回结果。

代码

class Solution {public int[] intersection(int[] nums1, int[] nums2) {int[] hash1 = new int[1001];int[] hash2 = new int[1001];for (int num : nums1)hash1[num] = 1;for (int num : nums2)hash2[num] = 1;List<Integer> resList = new ArrayList<>();for (int i = 0; i < 1001; i++)if (hash1[i] == 1 && hash2[i] == 1)resList.add(i);int[] res = new int[resList.size()];int i = 0;for (int num : resList)res[i++] = num;  return res;}
}

总结

当没有限定元素大小时,需要使用HashSet容器

class Solution {public int[] intersection(int[] nums1, int[] nums2) {Set<Integer> set1 = new HashSet<>();Set<Integer> resSet = new HashSet<>();for (int num : nums1)set1.add(num);for (int num : nums2)if (set1.contains(num))resSet.add(num);int[] res = new int[resSet.size()];int i = 0;for (int num : resSet)res[i++] = num;return res;}
}
 //一般方法int[] res = new int[resSet.size()];int i = 0;for (int num : resSet)res[i++] = num;return res;//resSet.stream():将Set集合resSet转换为一个Stream流对象。//mapToInt(x -> x):使用mapToInt方法将Stream流中的每个元素映射为int类型。这里的x -> x表示将每个元素直接作为int类型返回。//toArray():将Stream流中的元素收集到一个int类型的数组中。return resSet.stream().mapToInt(x -> x).toArray();

Leetcode 202. 快乐数

题目:202. 快乐数
解析:2.5 练习时长两年半

解题思路

使用HashSet来记录是否有重复,有重复但没到1,说明再也到不了1

代码

class Solution {public boolean isHappy(int n) {Set<Integer> record = new HashSet<>();while (n != 1 && record.contains(n) == false){record.add(n);n = getNextNum(n);}return n == 1;}private int getNextNum(int n){int res = 0;while (n > 0){int tmp = n % 10;res += tmp * tmp;n = n / 10;}return res;}}

总结

暂无

Leetcode 1. 两数之和

题目:1. 两数之和
解析:2.5 练习时长两年半

解题思路

使用HashMap,记录当前元素。寻找target-nums[i]是否出现过。

代码

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 tmp = target - nums[i];if (map.containsKey(tmp)){res[1] = i;res[0] = map.get(tmp);}map.put(nums[i], i);}return res;}
}

总结

对HashMap的使用还是比较生疏

HashSet基本使用:

//创建HashSet:
HashSet<String> set = new HashSet<>();//添加元素:
set.add("A");
set.add("B");
set.add("C");//获取 HashSet 的大小:
int size = set.size(); // 如果加入了三个元素,则返回 3//检查是否包含某个元素:
boolean hasElement = set.contains("A"); // 如果 "A" 在集合中,则返回 true//删除元素:
set.remove("A");//清空 HashSet:
set.clear();//判断 HashSet 是否为空:
boolean isEmpty = set.isEmpty();//遍历 HashSet:
// 使用迭代器
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {String element = iterator.next();// ... do something with element
}// 使用 forEach 和 lambda 表达式
set.forEach(element -> {// ... do something with element
});// 使用 for-each 循环
// 使用迭代器
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {String element = iterator.next();// ... do something with element
}
// 使用 forEach 和 lambda 表达式
set.forEach(element -> {// ... do something with element
});
// 使用 for-each 循环
for (String element : set) {// ... do something with element
}//转换为数组:
String[] array = set.toArray(new String[0]);

HashMap基本使用:

//创建HashMap:
HashMap<String, Integer> map = new HashMap<>();//添加元素:
map.put("key1", 1);
map.put("key2", 2);//获取元素:
Integer value = map.get("key1"); // returns 1//检查是否包含某个键:
boolean hasKey = map.containsKey("key1"); // returns true//删除元素:
map.remove("key1");//遍历HashMap:
for (Map.Entry<String, Integer> entry : map.entrySet()) {String key = entry.getKey();Integer value = entry.getValue();// ... do something with key and value
}//判断HashMap是否为空:
boolean isEmpty = map.isEmpty();//获取HashMap的大小:
int size = map.size();//清空HashMap:
map.clear();//其他静态和实例方法
//clone、putAll、removeAll

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

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

相关文章

java面试题|(1)多线程如何停止一个线程?

在Java中&#xff0c;停止一个线程的方法通常有以下几种&#xff1a; 使用标志位停止线程&#xff1a; 这是一种常见的做法&#xff0c;即通过设置一个标志位&#xff0c;在线程的执行体中检查这个标志位&#xff0c;当标志位满足某个条件时&#xff0c;退出线程执行。 class M…

那位拿了多个Offer的大佬分享了最新Go面经

和大家分享一下我们 Go就业训练营 和 升职加薪星球 中战友们投稿的真实面经。 这是第一篇&#xff0c;计划还会再更新4篇最新Go面经&#xff0c;都是拿到Offer的那种&#xff01; 欢迎大家关注我的账号&#xff0c;关注之后不迷路。 先秀战绩 虽然不同的公司考察的侧重点不一…

每日必学Linux命令:mv命令

mv命令是move的缩写&#xff0c;可以用来移动文件或者将文件改名&#xff08;move (rename) files&#xff09;&#xff0c;是Linux系统下常用的命令&#xff0c;经常用来备份文件或者目录。 一&#xff0e;命令格式&#xff1a; mv [选项] 源文件或目录 目标文件或目录二&am…

计算机基础(中断、IO)

操作系统 设备交互 CPU 与 IO 设备交互过程 CPU 通过设备控制器&#xff08;驱动&#xff1f;&#xff09;与计算机外设进行交互。可以将控制器想象成编程语言中的接口&#xff0c;然后不同地计算机外设的控制器去实现这个接口&#xff0c;CPU 只需要调用接口而无需关注具体地…

2024/3/24 蓝桥杯

P1678 烦恼的高考志愿 二分 import java.util.Arrays; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int m sc.nextInt();int[] a new int[n1];//学校int[] b new int[m…

vue3+ts使用DPlayer播放视频

下载依赖包 npm install dplayer --saveimport引入 import DPlayer from dplayer;使用 dom结构 <template><div class"vedio" id"PlayVideo"></div> </template> const initPlayer () > {// 播放视频state.dp new DPlayer…

如何使用生成式人工智能进行科学文献检索?

在学术写作过程中&#xff0c;查找文献是一个至关重要的步骤。文献检索不仅可以帮助我们了解研究领域的现状和发展&#xff0c;还可以为我们的论文提供理论支持和数据来源。然而&#xff0c;许多学者在查找文献时往往感到困惑和无所适从。本文将详细解释如何查找文献&#xff0…

柯桥专业会计培训|会计实操做账手工账电脑账出纳报税手把手教

开具纸质发票时&#xff0c;经常有小伙伴纠结发票开票人和复核人的问题。现在全国已施行数电票&#xff0c;这个问题还存在吗&#xff1f;一起来看看~ 暂未规定!! 开票人和复核人不应为同一人&#xff01; 目前&#xff0c;全国大部分城市已基本实现数电票的开票试点&#x…

Python学习:循环语句

Python循环语句 概念 循环语句是编程中常用的结构&#xff0c;用于多次执行相同或类似的代码块。Python中有两种主要的循环语句&#xff1a;for循环和while循环。 for循环&#xff1a; for循环用于遍历一个序列&#xff08;如列表、元组、字符串等&#xff09;中的元素&#x…

WordPress禁用Emojis表情符号

为了简化wordpress&#xff0c;可以去掉Emojis表情符号&#xff0c;具体方法如下&#xff1a; remove_action( wp_head, print_emoji_detection_script, 7 ); remove_action( wp_print_styles, print_emoji_styles ); 将这段代码添加到functions.php文件中即可。 原文 http…

模数转换器 SIG1232A 国产平替 ADS1232,替代 ADS1232

信格勒微电子的芯片产品已通过行业头部大厂导入验证&#xff0c;深受百万终端客户好评。 而且因为 fully compatible. 板子拿来&#xff0c;换个芯片&#xff0c; 性能更好 。MCU不用改 c code。 SIG1232A 10/80SPS 24-bit ADC with PGA Compatible Parts ADS1232 fully…

KIOXIA铠侠CM7系列E3.S双端口NVMe2.0 PCIe5.0 SSD KCM71RJE7T68

KIOXIA 铠侠推出的CM7-R E3.S企业级NVMe读密集型企业级固态硬盘&#xff0c;采用PCIe 5.0和NVMe 2.0技术&#xff0c;性能出色&#xff0c;最高可达2,700K IOPS&#xff08;随机读取&#xff09;和310K IOPS&#xff08;随机写入&#xff09;1 DWPD的耐用性和高达15.36 TB的存储…

Numpy、Matplotlib、Pandas常用函数

Numpy、Matplotlib、Pandas常用函数 Numpy 数组创建函数 array(): 创建数组 np.array([1, 2, 3])arange(): 创建范围内的数组 np.arange(1, 10)zeros(),ones(): 创建全0或全1数组 np.zeros((2&#xff0c; 3)) np.ones((3, 2))empty(): 创建未初始化的数组 np.empty((3, 3))l…

教程4_轮廓特征(更多属性)

目标 在本章中&#xff0c;我们将学习 - 凸性缺陷以及如何找到它们 - 查找点到多边形的最短距离 - 匹配不同的形状 1. 凸性缺陷 我们看到了关于轮廓的第二章的凸包。从这个凸包上的任何偏差都可以被认为是凸性缺陷。 OpenCV有一个函数来找到这个 cv.convexityDefects()。一个…

剧变:人类社会与国家危机的转折点 - 三余书屋 3ysw.net

精读文稿 今天我们解读的这本书是《巨变》。副标题是人类社会与国家危机的转折点&#xff0c;这是一个充满风险和危机的时代。比如作为个人&#xff0c;我们可能会遭遇失业、离婚、亲朋好友的意外去世。作为国家&#xff0c;会遭遇经济危机、社会动荡甚至战争。整个世界也会陷入…

3.1. 状态空间方程

引言 状态空间方程是现代控制理论的基础&#xff0c;它以矩阵的形式表达系统的状态变量&#xff0c;输入及输出的关系。它可以描述和处理多输入多输出的系统。 目前流行的一些算法&#xff0c;比如&#xff1a;模型预测控制、卡尔曼滤波器及最优化控制都是在状态空间方程的表…

第二证券|固态电池概念拉升,丰山集团、丰元股份涨停,翔丰华等大涨

固态电池概念26日盘中强势拉升&#xff0c;截至发稿&#xff0c;丰山集团、丰元股份、科森科技等涨停&#xff0c;翔丰华涨超7%&#xff0c;瑞泰新材、鹏辉动力、天力锂能等涨超5%。 音讯面上&#xff0c;近来&#xff0c;智己联席CEO刘涛昨日发文称&#xff0c;智己L6将在准9…

【虚幻引擎】DTWebSocketServer 蓝图创建WebSocket服务器插件使用说明

本插件可以使用蓝图创建WebSocket服务器&#xff0c;并监听响应数据。 1. 节点说明 Create Web Socket Server – 创建WebSocket服务器对象并开启监听 创建一个WebSocket服务器对象&#xff0c;并监听相应端口&#xff0c;连接地址为 ws://IP:PORT, 比如ws://192.168.1.5:9001…

一本通差分约束入门题

最关键的就是找好所有的要满足的不等式条件&#xff0c;注意隐含的条件还有一点就是注意没有源点 建立源点 #2436. 「SCOI2011」糖果 #include<bits/stdc.h> using namespace std; using ll long long; using pii pair<int,int>; #define int long long const in…

视觉图像处理与FPGA实现第七次作业——生成512深度、8位宽度的双端口存储器IP,并分析IP包资料构成

一、生成IP 打开Vivado&#xff0c;点击IP Catalog&#xff0c;搜索memory&#xff0c;双击对应IP核 调整参数为——512深度、8位宽度&#xff0c;双端口&#xff0c;然后一直默认点击OK 二、分析IP构成 查看IP细节&#xff0c;查看设计资源和仿真资源 双击打开文件 设计文件…