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

news2024/11/24 2:40:19

LeetCode 242 有效的字母异位词

在这里插入图片描述
本题思路:我们只需要分别统计,字符串 s ,字符串 t 中每个字符的出现次数,分别用两个数组来存储,然后再循环遍历对比两个数组中相同位置出现的次数,如果有不同的则返回 false。
在这里插入图片描述
统计完之后,然后一一对比 arrayS 和 arrayT,出现次数,判断,这两个字符是有效的字母异位词在这里插入图片描述

class Solution {
    public boolean isAnagram(String s, String t) {
        // 本题思路,从头到尾遍历,每个字符串中,每个字母出现的次数然后作对比,如果相同,说明字母异位词
        int lenS = s.length();
        int lenT = t.length();
        int[] arrayS = new int[123];
        int[] arrayT = new int[123];
        for(int i= 0; i < lenS ; i++){
            arrayS[s.charAt(i) - '0']++; 
        }
        for(int i = 0; i< lenT; i++){
            arrayT[t.charAt(i) - '0']++;
        }
        for(int i =0; i< arrayS.length;i++){
            if(arrayS[i] != arrayT[i]){
                return false;
            }
        }
        return true;
    }
}

LeetCode 349 两个数组的交集

在这里插入图片描述
本题思路:两个数组的交集,我们可以使用 set 集合,来解决这道题。首先将其中一个数组 nums1的值,存储到 set1 中,由于 set 会自动去重,所以存进去的元素是去重以后的元素。然后遍历 nums2中的所有元素,判断是否在 set1 中存在过,如果存在就存到到 set2 中。遍历完以后,set2 中存储的就是两个数组的交集。然后创建一个 ans 数组,将 set2 中元素一一赋值给 ans,最后返回 ans 数组。
在这里插入图片描述

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        // 先将其中一个数组存入 set 中
        Set<Integer> set1 = new HashSet();
        for(int i = 0; i < nums1.length; i++){
            set1.add(nums1[i]);
        }
        Set<Integer> set2 = new HashSet();
        for(int i = 0; i < nums2.length; i++){
            if(set1.contains(nums2[i])){
                set2.add(nums2[i]);
            }
        }
        int[] ans = new int[set2.size()];
        int j = 0;
        for(int o : set2){
            ans[j++] = o;
        }
        return ans;
    }
}

LeetCode 202 快乐数

在这里插入图片描述
本题思路:就是输入一个数字 n ,我们要得到 下一个数字是什么,就需要写出一个函数,来得到下个数。 得到下个数后来判断是否为1,因为题目说了,有可能无线循环,那么我们循环判断的时候,就不能只是 while (res != 1)了,在这个循环体内部,应该加入一个 Set 集合,来将每一个结果记录下来。如果出现重复就直接 返回 false,如果出了循环,说明 res=1了,直接返回 true 即可。

class Solution {
    public boolean isHappy(int n) {
        Set<Integer> set = new HashSet();
        int res = getNextNumber(n);
        while(res != 1){
            if(!set.contains(res)){
                set.add(res);
            }else{
                return false;
            }
            res = getNextNumber(res);
        }
        return true;
    }
        // 思路,就是输出一个数字 ,要找它的下一数,方便后续判断
    public static int getNextNumber(int n){
        int sum = 0;
        while( n != 0){
            sum += (n % 10) * (n % 10);
            n = n / 10;
        }
        return sum;
    }
}

注意:本题只要能够,写出 getNextNumber 方法,就基本完成一大半了。这个方法的逻辑,可以代代数字体会一下。


LeetCode 1 两数之和

在这里插入图片描述
本题思路:使用 map 集合,遍历整个数组,首先将数组的第一个元素存进去 map 中,map.put(nums[0],0),Key是 值,Value是 下标。
从下标为 1 的元素开始遍历,判断条件是 target - nums[i] 的值是否存在 map 中,
如果包含,直接返回 当前 下标,和 target - nums[i] 的下标即可。
如果不包含,则将 nums[i] 存入 map 中。

class Solution {
    public int[] twoSum(int[] nums, int target) {
        // 利用 map 把所有的元素依次存入,每次存入一个判断 target - nums[i] 的值,存不存在 map中
        Map<Integer,Integer> map = new HashMap();
        map.put(nums[0],0);
        int[] res = new int[2];
        for(int i = 1; i < nums.length; i++){
            // 如果 map 中有  target - nums[i] ,说明符合题意
            if(map.containsKey(target - nums[i]) ){
                res[0] = i;
                res[1] = map.get(target - nums[i]);
                return res;
            }
            map.put(nums[i],i);
        }
        return res;
    }
}

下面用示例2,画个图来分析下这个流程,方便更加理解代码
在这里插入图片描述

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

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

相关文章

双非大数据

双非本秋招上岸总结 个人简介 学历&#xff1a;双非&#xff1b; 专业&#xff1a;软件工程&#xff1b; 求职岗位&#xff1a;大数据开发工程师&#xff1b; 状态&#xff1a;已上岸 翻车经历 学校以Java后端开发为主流&#xff0c;我从大二开始学习Java&#xff0c;直到大四…

HarmonyOS(十四)——状态管理之@State装饰器(组件内状态)

前言 在初识状态管理我们了解了状态管理的基本概念&#xff0c;以及管理组件拥有的状态有哪几种装饰器&#xff0c;今天我们就来认识一下第一种装饰器&#xff1a;State装饰器&#xff08;组件内状态&#xff09;。 概述 State装饰的变量&#xff0c;或称为状态变量&#xf…

解决 Hbuilder打包 Apk pad 无法横屏 以及 H5 直接打包 成Apk

解决 Hbuilder打包 Apk pad 无法横屏 前言云打包配置 前言 利用VUE 写了一套H5 想着 做一个APP壳 然后把 H5 直接嵌进去 客户要求 在pad 端 能够操作 然后页面风格 也需要pad 横屏展示 云打包 配置 下面是manifest.json 配置文件 {"platforms": ["iPad"…

Vue--第十天

终极实战----大事件项目 1.简介&#xff1a; 2.创建项目&#xff1a; 1.创建&#xff08;159-163&#xff09;&#xff1a; 还是对着视频操作吧 2.路由&#xff1a; 3.element Plus: 导入element Plus 后不需要再导入插件配置&#xff0c;就连组件导入也不用 4.pinia构建用…

Ubuntu Desktop 22.04 设置 ssh 超时时间

Ubuntu Desktop 22.04 使用 ssh 连接服务器时&#xff0c;发现一段时间不操作就会自动断开连接&#xff0c;解决方法如下&#xff1a; 打开 /etc/ssh/ssh_config 文件&#xff1a; sudo vim /etc/ssh/ssh_config在文件最后添加&#xff1a; # ssh 客户端会每隔 30 秒发送一个…

网络(九)三层路由、DHCP以及VRRP协议介绍

目录 一、三层路由 1. 定义 2. 交换原理 3. 操作演示 3.1 图示 3.2 LSW1新建vlan10、20、30&#xff0c;分别对应123接口均为access类型&#xff0c;接口4为trunkl类型&#xff0c;允许所有vlan通过 3.3 LSW2新建vlan10、20、30&#xff0c;配置接口1为trunk类型&…

ElasticSearch单机或集群未授权访问漏洞

漏洞处理方法&#xff1a; 1、可以使用系统防火墙 来做限制只允许ES集群和Server节点的IP来访问漏洞节点的9200端口&#xff0c;其他的全部拒绝。 2、在ES节点上设置用户密码 漏洞现象&#xff1a;直接访问9200端口不需要密码验证 修复过程 2.1 生成认证文件 必须要生成…

JupyterHub 如何切换 conda 小环境

JupyterHub 如何切换 conda 小环境 服务器已经部署好 JupyterHub &#xff0c;相关端口请看对应答疑群群公告。在Jupyterhub 中使用 conda 创建的小环境&#xff0c;首先 ssh 登录上服务器或者在 JupyterHub 网页端打开终端 terminal。然后安装 conda &#xff0c;方法请见 Q4&…

动能方案 | 技术引领未来:两轮电动车遥控解锁方案探秘

随着电动交通工具的快速普及&#xff0c;创新性的智能解锁系统正在为两轮电动车带来更便捷、安全的使用体验。本文将深入介绍一种先进的两轮电动车遥控解锁方案&#xff0c;探讨其优势&#xff0c;并推荐一款先进的芯片技术&#xff0c;引领行业未来。 01方案介绍 1、技术原…

什么是tomcat?tomcat是干什么用的?

目录 Tomcat 的主要用途包括&#xff1a; 托管Java Web应用程序&#xff1a; Servlet 容器&#xff1a; 以下是关于Servlet容器的一些关键特性和功能&#xff1a; 生命周期管理&#xff1a; 多线程支持&#xff1a; HTTP请求处理&#xff1a; HTTP响应生成&#xff1a;…

《代码随想录》--二叉树(一)

《代码随想录》--二叉树 第一部分 1、二叉树的递归遍历2、二叉树的迭代遍历3、统一风格的迭代遍历代码4、二叉树的层序遍历226.翻转二叉树 1、二叉树的递归遍历 前序遍历 中序遍历 后序遍历 代码 前序遍历 class Solution {public List<Integer> preorderTraversal(T…

MySQL通过Binlog日志恢复数据库

一、MySQL Binlog 简介 MySQL 的二进制日志 binlog 可以说是 MySQL 最重要的日志&#xff0c;它记录了所有的 DDL 和 DML 语句&#xff08;除了数据查询语句select、show等&#xff09;&#xff0c;以事件形式记录&#xff0c;还包含语句所执行的消耗的时间&#xff0c;MySQL的…

rabbit mq 配置要点

rabbit mq是一款基于AMQP协议&#xff08;Advanced Message Queuing Protocol - 高级消息队列协议&#xff09;的消息队列。 生产者与消费者之间是通过Broker建立连接&#xff0c;在实际的项目中&#xff0c;他们是通过exchange和queue联系在一起的 生产者发送消息流程&#x…

磁盘阵列/视频监控系统EasyCVR新增邮件验证与定时更换登录密码功能

TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力&…

unity—UGUI 点击按钮后,持续点击空格键会持续出发按钮

在unity开发当中&#xff0c;使用UGUI开发&#xff0c;无论是你代码绑定按钮事件&#xff0c;还是在Inspector窗口直接拖拽绑定的事件&#xff0c;点击按钮事件后&#xff0c;按空格键都会再次执行相关的方法。 默认情况下&#xff0c;Unity将空格键映射为UI按钮的Submit提交操…

【NSX-T】9. 搭建NSX-T环境 —— 使用 OSPF 配置 Tier-0 网关

目录 Lab 说明9.1 创建上行链路网段9.2 创建 Tier-0 网关&#xff08;1&#xff09;设置 Interface 信息&#xff08;2&#xff09;禁用 BGP&#xff08;3&#xff09;启用和配置 OSPF&#xff08;4&#xff09;查看 OSPF Neighbors&#xff08;5&#xff09;为 OSPF 配置路由重…

Vue3配置使用vue-router路由

随着Vue版本的升级&#xff0c;Vue 2.x项目和Vue 3.x项目在使用vue-router上有些区别&#xff0c;本文就简单介绍下vue-router在Vue3中的配置和使用。 一、目录结构 demo/package.jsonvite.config.jsindex.htmlpublic/src/api/assets/common/components/store/views/home.vuel…

二维码智慧门牌管理系统升级解决方案:费用缴纳更便捷

文章目录 前言一、用量查询与数据分析二、一键支付功能三、多种费用管理与多账户使用一、提高生活和工作效率 前言 科技改变生活方式 随着科技的进步&#xff0c;物联网技术正在改变我们的生活方式。在企业和家庭中&#xff0c;费用管理和缴纳是一个重要问题。为了解决这个问题…

《volatile使用与学习总结:2023-12-17》多层面分析学习java关键字--volatile

一、简介 volatile是java中提供的一种轻量级的同步机制&#xff0c;相比于synchronized更加轻量&#xff0c;因为volatile避免了线程频繁的上下文切换和调度&#xff0c;但是也有缺点&#xff0c;同步性差并且使用起来易出错。 二、并发编程的三个概念 原子性 原子性即一个操…

单词搜索 II

题目链接 单词搜索 II 题目描述 注意点 board[i][j] 是一个小写英文字母words[i] 由小写英文字母组成words 中的所有字符串互不相同同一个单元格内的字母在一个单词中不允许被重复使用 解答思路 要想找到一个完整的单词&#xff0c;首先想到的是深度优先遍历&#xff0c;如…