代码随想录-刷题第六天

242. 有效的字母异位词

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

思路:哈希法。利用数组来记录出现的字母个数,然后判断是否为字母异位词。

时间复杂度:O(n)

class Solution {public boolean isAnagram(String s, String t) {int[] count = new int[26];for (int i = 0; i < s.length(); i++) {// 并不需要记住字符a的ASCII,只要求出一个相对数值就可以了count[s.charAt(i) - 'a']++;}for (int i = 0; i < t.length(); i++) {count[t.charAt(i) - 'a']--;}for (int i : count) {// record数组如果有的元素不为零0,// 说明字符串s和t一定是谁多了字符或者谁少了字符。if (i != 0) {return false;}}// record数组所有元素都为零0,说明字符串s和t是字母异位词return true;}
}

349. 两个数组的交集

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

思路:哈希法。利用HashSet集合来判断元素是否存在,set集合判断元素是否存在的时间复杂度为O(1)。注意,这里涉及将集合转换为int数组的操作。

时间复杂度:O(n)

class Solution {public int[] intersection(int[] nums1, int[] nums2) {// 存入set,然后遍历setSet<Integer> set1 = new HashSet<>();Set<Integer> result = new HashSet<>();for (int num : nums1) {set1.add(num);}for (int num : nums2) {if (set1.contains(num)) {result.add(num);}}// 将结果集合转为数组// return result.stream().mapToInt(x -> x).toArray();int[] res = new int[result.size()];int i = 0;for(int num : result){res[i] = num;i++;}return res;}
}

202. 快乐数

题目链接:202. 快乐数

思路:哈希法加数值各个位上的单数操作,使用HashSet集合来检测是否循环。

时间复杂度:里面while循环的时间复杂度为O(logn),因为数字的位数由logn决定。

class Solution {public boolean isHappy(int n) {Set<Integer> set = new HashSet<>();int sum = 0;while (n != 1) {// 取数值各个位上的单数平方之和while (n != 0) {sum += Math.pow(n % 10, 2);n = n / 10;}// 如果这个sum曾经出现过,说明已经陷入了无限循环了if (set.contains(sum)) {return false;}set.add(sum);n = sum;sum = 0;}return true;}
}

1. 两数之和

题目链接:1. 两数之和

思路:哈希法,使用HashMap集合key存放元素value存放下标,遍历一遍数组,判断Map集合中是否有符合条件的元素,如果有,返回两个元素的下标,每次判断结束要将当前元素值下标存放进Map集合。注意,为了防止当前元素也是符合条件的元素(即两个当前元素相加为目标值)导致的两个下标相同,所以要在判断结束之后再将当前元素和下标放进Map集合。

时间复杂度:O(n)

class Solution {public int[] twoSum(int[] nums, int target) {// 维护 val -> index 的映射HashMap<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {// 查表,看看是否有能和 nums[i] 凑出 target 的元素int need = target - nums[i];if (map.containsKey(need)) {return new int[]{map.get(need), i};}// 存入 val -> index 的映射map.put(nums[i], i);}return null;}
}

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

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

相关文章

【云备份】第三方库的认识与使用

文章目录 json库粗略认识详细认识writer 类reader类jsoncpp序列化实现jsoncpp反序列化实现 bundle文件压缩库简单认识bundle库实现文件压缩bundle库实现文件解压缩 httplib库Request类Response类Server类Client类 json库 粗略认识 json是一种数据交换格式&#xff0c;采用完全…

激光切割设备中模组的作用有哪些?

激光切割设备是一种高精度的自动化加工设备&#xff0c;用于对金属、非金属等材料进行精确切割。直线模组作为激光切割设备的重要组成部分&#xff0c;在激光切割设备中起着重要的作用&#xff0c;为设备的运动系统提供了高精度、高稳定性和高效率的运动控制。 1、高精度的位置…

excel单元格加背景颜色不生效?

如果在 Excel 中设置单元格背景颜色而发现不生效&#xff0c;可能有几个原因。以下是一些常见的解决方法&#xff1a; 1. **单元格锁定&#xff1a;** 检查所在单元格是否被锁定。如果单元格被锁定&#xff0c;并且工作表被保护&#xff0c;你可能无法更改其背景颜色。在工作表…

mysql 优化器的AST树是啥

from ChatGPT: MySQL中的优化器&#xff08;optimizer&#xff09;使用AST&#xff08;Abstract Syntax Tree&#xff0c;抽象语法树&#xff09;来表示查询的语法结构。AST是一种树状结构&#xff0c;它反映了查询语句的语法层次&#xff0c;是一个抽象表示&#xff0c;用于更…

Linux - 文件系统 - 理解目录 - 理解 软/硬链接

前言 在上篇博客当中&#xff0c;我们对 文件系统 和 inode 做了初步了解&#xff0c;本博客将在上篇博客的基础之上&#xff0c;对于 文件系统当中的目录进行进步一阐述。 Linux - 进一步理解 文件系统 - inode - 机械硬盘-CSDN博客 目录 一个文件有一个 inode&#xff0c;…

Redis打包事务,分批提交

一、需求背景 接手一个老项目&#xff0c;在项目启动的时候&#xff0c;需要将xxx省整个省的所有区域数据数据、以及系统字典配置逐条保存在Redis缓存里面&#xff0c;这样查询的时候会更快; 区域数据字典数据一共大概20000多条,&#xff0c;前同事直接使用 list.forEach…

Windows安装MongoDB

1、下载MongoDB的zip&#xff0c;解压 2、创建目录 mkdir D:\JavaSoftware\Database\MongoDB\mongodb-win32-x86_64-windows-5.0.8\data\db mkdir D:\JavaSoftware\Database\MongoDB\mongodb-win32-x86_64-windows-5.0.8\data\log 3、创建一个配置文件mongod.cfg&#xff0c…

使用一个接口的结果作为第二个接口的参数并将两者的数据放置成下拉框的格式

背景 我使用下拉框实现选择id 但是只有两个接口 一个是所有的id 另一个是id对应的具体信息 我想把id传入另一个接口并且获取其name然后写成类似这样的数组 [ { value: 1, label: ‘名称1’ }&#xff0c; { value: 2, label: ‘名称2’ } { value: 3, label: ‘名称3’ } ] 然…

【PPspliT】ppt转pdf-保留过渡动画

网址 http://www.maxonthenet.altervista.org/ppsplit.php 下载安装 使用 再次打开ppt&#xff0c;就能在上方的选项栏里头看到了&#xff1a;

GEE生物量碳储量——利用红和近红外波段和OTSU大津法提取纯净森林面积

简介: 如何利用红和近红外波段和OTSU大津法提取纯净森林面积?本文的主要逻辑是利用特定时期的遥感影像的波段,提取指定范围的内的DN值,然后分别统计发生阈值变化的峰值区域,从而作为筛选森林的临界点,如果研究区较大的话则需要先进行影像分割,分割成为相同大小的区域,…

前端开发Java学习

注释&#xff1a; 单行注释 // 多行注释 /* */ 文件注释 /** */ 1 关键字 &#xff08;关键字一定是小写&#xff09; 2 常量 字符串常量"HelloWord","你好世界"整数常量12&#xff0c;-33小数常量3.14&#xff0c;22.1字符常量A&#xff0c;a &…

不是默认进入Linux|总是自动进入windows系统

问题描述 不是默认进入Linux系统无法主动出现boot引导自动进入windows系统 尝试无效 修复引导无效重装Grub无效重装系统无效 环境 Ubuntu 22.04 LST微星主板 解决方案 修改引导顺序&#xff1a; 开机狂按Del键&#xff0c;进入BIOS系统&#xff0c;左侧Settings 设置&…

src和href的区别

前言 持续学习总结输出中&#xff0c;src和href都是HTML中特定元素的属性&#xff0c;都可以用来引入外部的资源。两者区别如下&#xff1a; 1、作用 href 用于在当前文档和引用资源之间确立联系。 src 用于替换当前内容。 2、范围用途 src&#xff08;source&#xff09…

RabbitMQ基础教程

1.什么是消息队列 消息队列&#xff08;Message Queue&#xff09;&#xff0c;我们一般简称为MQ。消息队列中间件是分布式系统中重要的组件&#xff0c;具有异步性、松耦合、分布式、可靠性等特点。用于实现高性能、高可用、可伸缩和最终一致性架构。是大型分布式系统不可缺少…

Angular11 MSAL B2C登录实例 (一)

前言 因为项目需求&#xff0c;需要把Angular 11项目中登录方式改成B2C登录&#xff0c;所以在参考了一系列文档后&#xff0c;成功通过MSAL将项目的登录方式改成B2C登录。下面介绍了详细步骤及一些注意事项。 步骤&#xff1a; 1. 安装MSAL 在项目中安装msal npm i azure/…

BUUCTF [WUSTCTF2020]find_me 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 得到的 flag 请包上 flag{} 提交。 感谢 Iven Huang 师傅供题。 比赛平台&#xff1a;https://ctfgame.w-ais.cn/ 密文&#xff1a; 下载附件&#xff0c;得到一个.jpg图片。 解题思路&#xff1a; 1、得到一张图…

vue中页面(路由)跳转及传值的几种方式 router-link + query + params

vue中页面(路由)跳转及传值的几种方式 知道query 和 params 是什么 参考文案:https://www.php.cn/js-tutorial-382859.html 跳转的几种方式与传值 1、router-link 1.1 根据路由路径(无参数与有参数) <router-link to = "/page">跳转到page页面</…

Java WebSocket 客户端接收大量数据

介绍 WebSocket 是一种基于 TCP 协议的全双工通信协议&#xff0c;它能够在客户端和服务器之间建立一个持久连接&#xff0c;实现实时的双向数据传输。在实际应用中&#xff0c;有时候我们需要处理大量的数据&#xff0c;例如实时监控系统或者实时股票行情等。本文将介绍如何使…

Matlab三角剖分插值问题分析

目录 前言 一、问题引入 二、一个例子 1.生成散点图 2.对数据进行剖分 3.点法式分析 三、最后结果 前言 上一篇文章感觉对三角剖分问题没有说清楚&#xff0c;这次专门对三角剖分问题再仔细说说。 一、问题引入 实际上这个问题是用来解决二维曲面插值问题的。 二维插值问题&…