【LeetCode-经典面试150题-day10】
目录
242.有效的字母异位词
49.字母异位词分组
202.快乐数
219.存在重复元素Ⅱ
383.赎金信
205.同构字符串
290.单词规律
242.有效的字母异位词
题意:
给定两个字符串
s
和t
,编写一个函数来判断t
是否是s
的字母异位词。注意:若
s
和t
中每个字符出现的次数都相同,则称s
和t
互为字母异位词
【输入样例】
s="anagram",t="nagaram"
【输出样例】true
解题思路:
比较简单,定义一个数组来记录两个字符串中的字母出现次数
数组alphaNum初始化为0,一个字符串负责对其++,一个对齐--
如果是字母异位词,最后alphaNum的值肯定还是全0
class Solution {public boolean isAnagram(String s, String t) {//s和t都是小写字母,每个字符出现次数相同,当两个字符长度不一样时也不行if(s.length() != t.length()){return false;}int[] alphaNum = new int[26];for(int i=0;i<s.length();++i){++alphaNum[s.charAt(i) - 'a'];}for(int i = 0;i<t.length();++i){--alphaNum[t.charAt(i) - 'a'];if(alphaNum[t.charAt(i) - 'a'] < 0){return false;}}return true;}
}
时间: 击败了82.24%
内存: 击败了71.71%
49.字母异位词分组
题意:
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
【输入样例】
strs=["eat","tea","tan","ate","nat","bat"]
【输出样例】[["eat","tea","ate"],["tan","nat"],["bat"]]
解题思路:
排序+哈希
拿到一个字符串str,对其进行排序:如“eat"排序完是”aet“,之后将aet作为key存到map中
使用map.getOrDefault(key,new Array<>());
如果map中存在此key,会将key对应的value(本题是list)返回了,如果没有此key,证明是第一次遇到,new一个list
class Solution {public List<List<String>> groupAnagrams(String[] strs) {//方法一:排序+哈希Map<String,List<String>> map = new HashMap<String,List<String>>();for(String str: strs){char[] array = str.toCharArray();Arrays.sort(array);String key = new String(array);List<String> list = map.getOrDefault(key,new ArrayList<String>());list.add(str);map.put(key,list);}return new ArrayList<List<String>>(map.values());//把map转成对应格式}
}
时间: 击败了99.24%
内存: 击败了40.02%
class Solution {public List<List<String>> groupAnagrams(String[] strs) {//方法二:计数+哈希/**拿到一个字符串str,按上一题的思路统计出现的次数和字母作为key:如eat为a1e1t1用计数统计来替换掉数组排序之后是一样的操作使用map.getOrDefault(key,new Array<>());如果map中存在此key,会将key对应的value(本题是list)返回了,如果没有此key,证明是第一次遇到,new一个list*/Map<String,List<String>> map = new HashMap<String,List<String>>();for(String str: strs){int[] count = new int[26];for(int i=0;i<str.length();++i){++count[str.charAt(i)-'a'];}//合成keyStringBuffer key = new StringBuffer();for(int i=0;i<26;++i){if(count[i]!=0){key.append((char)(i+'a'));//字母key.append(count[i]);//次数}}String strKey = key.toString();List<String> list = map.getOrDefault(strKey,new ArrayList<String>());list.add(str);map.put(strKey,list);}return new ArrayList<List<String>>(map.values());//把map转成对应格式}
}
202.快乐数
题意:
编写一个算法来判断一个数
n
是不是快乐数。「快乐数」 定义为:
- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
- 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
- 如果这个过程 结果为 1,那么这个数就是快乐数。
如果
n
是 快乐数 就返回true
;不是,则返回false
。
【输入样例】n=19
【输出样例】true
解题思路:
哈希集合
不断计算n的各位数平方之和,并且将每次计算到的数存到set中,如果在n不等于1的情况下发现当前计算出来的n已经存在set中,证明陷入了死循环
class Solution {private int getNext(int n) {int totalSum = 0;while (n > 0) {int d = n % 10;n = n / 10;totalSum += d * d;}return totalSum;}public boolean isHappy(int n) {Set<Integer> seen = new HashSet<>();while (n != 1 && !seen.contains(n)) {seen.add(n);n = getNext(n);}return n == 1;}
}
时间: 击败了85.70%
内存: 击败了81.73%
219.存在重复元素Ⅱ
题意:
给你一个整数数组
nums
和一个整数k
,判断数组中是否存在两个 不同的索引i
和j
,满足nums[i] == nums[j]
且abs(i - j) <= k
。如果存在,返回true
;否则,返回false
。
【输入样例】nums=[1,2,3,1],k=3
【输出样例】true
解题思路:
nums[i]作为key,i作为value,当找到nums[j] == nums[i]时,计算i和j的差距,如果不符合k的要求,修改nums[i]的value为j,因为数组遍历,指针一直在往后走。
class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {Map<Integer,Integer> map = new HashMap<Integer,Integer>();int temp;for(int i=0;i<nums.length;++i){temp = nums[i];if(map.containsKey(temp) && (i - map.get(temp) <=k)){return true;}map.put(temp,i);}return false;}
}
时间: 击败了85.19%
内存: 击败了47.36%
383.赎金信
题意:
给你两个字符串:
ransomNote
和magazine
,判断ransomNote
能不能由magazine
里面的字符构成。如果可以,返回
true
;否则返回false
。
magazine
中的每个字符只能在ransomNote
中使用一次。提示:
1 <= ransomNote.length, magazine.length <= 105
ransomNote
和magazine
由小写英文字母组成
【输入样例】ransomNote="a", magazine = "b"
【输出样例】false
解题思路:
直接统计magazine中每个字符用到的次数,能不能大于等于randomNote中每个字符用到的次数。
class Solution {public boolean canConstruct(String ransomNote, String magazine) {if(magazine.length() < ransomNote.length()){return false;}int[] num = new int[26];for(int i=0;i<magazine.length();++i){++num[magazine.charAt(i) - 'a'];}for(int i=0;i<ransomNote.length();++i){--num[ransomNote.charAt(i) - 'a'];if(num[ransomNote.charAt(i) - 'a'] < 0){return false;}}return true;}
}
时间: 击败了99.33%
内存: 击败了98.96%
205.同构字符串
题意:
给定两个字符串
s
和t
,判断它们是否是同构的。如果
s
中的字符可以按某种映射关系替换得到t
,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
提示:
1 <= s.length <= 5 * 104
t.length == s.length
s
和t
由任意有效的 ASCII 字符组成
【输入样例】s="egg",t="add"
【输出样例】true
解题思路:
s.charAt(i)是key,t.charAt(i)是value,必须一致。
class Solution {public boolean isIsomorphic(String s, String t) {if(s==null){return true;}Map<Character,Character> map = new HashMap<Character,Character>();for(int i=0;i<s.length();++i){char key = s.charAt(i);if(!map.containsKey(key)){//如果这个key和value都不存在的话,那就直接添加key,value//key不存在,但是已经有value了,也不行if(map.containsValue(t.charAt(i))){return false;}map.put(key,t.charAt(i));}else{if(t.charAt(i) != map.get(key)){return false;}}}return true;}
}
时间: 击败了58.80%
内存: 击败了76.72%
290.单词规律
题意:
给定一种规律
pattern
和一个字符串s
,判断s
是否遵循相同的规律。这里的 遵循 指完全匹配,例如,
pattern
里的每个字母和字符串s
中的每个非空单词之间存在着双向连接的对应规律。提示:
1 <= pattern.length <= 300
pattern
只包含小写英文字母1 <= s.length <= 3000
s
只包含小写英文字母和' '
s
不包含 任何前导或尾随对空格s
中每个单词都被 单个空格 分隔
【输入样例】pattern="abba", s="dog cat cat dog"
【输出样例】true
解题思路:
与205.同构字符串类似,只不过value从Character变成了String。
class Solution {public boolean wordPattern(String pattern, String s) {if(s == null){return true;}Map<Character,String> map = new HashMap<Character,String>();String[] str = s.split(" ");//根据空格提取单词if(pattern.length() != str.length){return false;}for(int i=0;i<pattern.length();++i){char key = pattern.charAt(i);if(map.containsKey(key) && !(str[i].equals(map.get(key)))){return false;}if(!map.containsKey(key) && map.containsValue(str[i])){return false;}map.put(key,str[i]);}return true;}
}
时间: 击败了55.43%
内存: 击败了61.55%
相关文章:
【LeetCode-经典面试150题-day10】
目录 242.有效的字母异位词 49.字母异位词分组 202.快乐数 219.存在重复元素Ⅱ 383.赎金信 205.同构字符串 290.单词规律 242.有效的字母异位词 题意: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和…...

Transformer在医学影像中的应用综述-分类
文章目录 COVID-19 Diagnosis黑盒模型可解释的模型 肿瘤分类黑盒模型可解释模型 视网膜疾病分类小结 总体结构 COVID-19 Diagnosis 黑盒模型 Point-of-Care Transformer(POCFormer):利用Linformer将自注意的空间和时间复杂度从二次型降低到线性型。POCFormer有200…...
新服务器基本环境下载conda + docker + docker-compose + git
文章目录 Ubuntu 允许root用户登录 centos无所谓condadockerubuntucentos docker-compose官方下载docker-compose国内镜像 gitUbuntuCentos Ubuntu 允许root用户登录 centos无所谓 # 以普通用户登录系统,创建root用户的密码 sudo passwd root# SSH 放行 sudo sed -…...

Matlab论文插图绘制模板第108期—特征渲染的标签散点图
在之前的文章中,分享了Matlab标签散点图的绘制模板: 进一步,再来分享一下特征渲染的标签散点图的绘制模板,以便再添加一个维度的信息。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中…...

设计模式之中介者模式(Mediator)的C++实现
1、中介者模式的提出 在软件组件开发过程中,如果存在多个对象,且这些对象之间存在的相互交互的情况不是一一对应的情况,这种功能组件间的对象引用关系比较复杂,耦合度较高。如果有一些新的需求变化,则不易扩展。中介者…...
css弹性布局的方式
概述 任何一个容器都可以定义为弹性布局容器,使用display:flex(display:inline-flex)开启弹性布局。 2个方向轴:水平主轴和垂直交叉轴 6个容器属性 1.flex-direction :主轴的方向 2.justify-content:子元素在主轴的对齐方式 …...
阿里云源 Python、npm、git、goproxy
阿里云源 Python、npm、git、goproxy 各种设置源的方式也都比较常见,但是根本记不住,每次都查感觉也不太好。 正好发现了个宝藏地址,看起来还挺全的,以后找源也可以先在这个地方翻翻,顺便就搞了几个放到一个脚本里边…...
微服务架构1.0
微服务架构 微服务架构是一种应用程序架构模式,将一个应用程序划分为一组小型、独立、自治的服务,每个服务专注于一个特定的业务功能。 每个微服务都可以独立开发、部署、扩展和维护,通过定义良好的接口和协议,它们可以相互通信…...
iOS开发Swift-基础部分
1.常量 let maxNum 10 //单个常量赋值 let maxNum 10, minNum 2 //多个常量赋值用逗号隔开2.变量 var x 0.0 //单个变量赋值 var x 0.0, y 0.1 //多个变量赋值用逗号隔开3.类型注解 系统可通过赋初始值进行自动推断。 var name&#…...
【LeetCode-经典面试150题-day11】
目录 128.最长连续序列 228.汇总区间 56.合并区间 57.插入区间 452.用最少数量的箭引爆气球 128.最长连续序列 题意: 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并…...

深度学习入门(三):卷积神经网络(CNN)
引入 给定一张图片,计算机需要模型判断图里的东西是什么? (car、truck、airplane、ship、horse) 一、卷积神经网络整体架构 CONV:卷积计算层,线性乘积求和RELU:激励层,激活函数P…...
网站是如何识别网络爬虫的?
在爬取数据时,你常常会遇到各种网站的反爬机制。网站是如何检测和拦截网络爬虫的呢?本文将为你揭秘网站使用的几种常见的反爬手段,并为你提供一些解决方案,助你越过反爬壁垒,提升你的实际操作效率。 一、Cookie检测 …...

TP-Link 智能灯泡缺陷能让黑客窃取用户 WiFi 密码
来自意大利和英国的研究人员在 TP-Link Tapo L530E 智能灯泡和 TP-Link Tapo 应用程序中发现了4个漏洞,攻击者可以利用这些漏洞窃取目标的 WiFi 密码。 TP-Link Tapo L530E 是包括亚马逊在内的多个市场上最畅销的智能灯泡。TP-link Tapo是一款智能设备管理应用程序…...
接口测试,如何测试?
一 入参 1 正常的入参 输入正常的参数,响应按照接口文档的约定正常返回。 2 异常的入参 参数异常包括:参数为空,多参或少参,错误的参数数据; 错误的参数数据:数据类型错误、非空参数为空,长…...
React源码解析18(11)------ 实现多次setState的批处理
摘要 在React中,如果涉及到了多次setState,组件render几次。setState是同步的还是异步的。这是一个很常见的面试题。 而本篇文章,就是主要实现React中,对于这部分的性能优化,我们称之为批处理。例如当我有下面的JSX。…...

评测凯迪仕K70「千里眼」智能锁:不忘安全初心,便捷体验更上一层
能打败凯迪仕的,只有它自己。这是我们在体验过凯迪仕最新旗舰产品K70「千里眼」智能锁之后的感受。作为凯迪仕2023年最新旗舰机型,K70「千里眼」智能锁在配置上可以说是「机皇」般的存在。3K超高清智能锁猫眼、车规级24GHz雷达、大小双屏设计、三方可视对…...

mysql数据库root密码遗忘后,修改root密码
目录 方式一: 方式二: 2.1 也可以像我这样,普通用户登录进去后 2.2 执行如下命令,将已知的user1的加密密文更新到root中 2.3 查询数据库 2.4 用root用户登录 2.5 登录正常,但这会root登录进去后,无法…...

网络安全(黑客)快速入门~
网络安全的学习需要遵守循序渐进,由浅入深。 通常网络安全学习方法有两种: 方法1:先学习编程,然后学习Web渗透及工具使用等; 适用人群:有一定的代码基础的小伙伴 基础部分 基础部分需要学习以下内容&am…...

华为OD机试 - 数字颠倒(Java 2023 B卷 100分)
目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、Java算法源码投机取巧七、效果展示 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&am…...
leetcode做题笔记87扰乱字符串
使用下面描述的算法可以扰乱字符串 s 得到字符串 t : 如果字符串的长度为 1 ,算法停止如果字符串的长度 > 1 ,执行下述步骤: 在一个随机下标处将字符串分割成两个非空的子字符串。即,如果已知字符串 s ,…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...