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

242.有效的字母异位词

在这里插入图片描述

题目链接: 203.移除链表元素
文档讲解:代码随想录
状态:so easy

思路:使用计数器数组统计字符串中字符出现频率。

题解

public boolean isAnagram(String s, String t) {
    // 将输入的字符串s转换为字符数组
    char[] sChars = s.toCharArray();
    // 将输入的字符串t转换为字符数组
    char[] tChars = t.toCharArray();
    
    // 初始化一个大小为26的数组,用于计数字符出现的次数
    // 由于只有小写字母,所以数组大小为26,索引0对应字符'a',索引25对应字符'z'
    int[] counter = new int[26];
    
    // 遍历字符串s的字符数组
    for (char c : sChars) {
        // 将字符转换为0到25的索引,并在对应位置的计数器增加1
        counter[c - 'a']++;
    }
    
    // 遍历字符串t的字符数组
    for (char c : tChars) {
        // 将字符转换为0到25的索引,并在对应位置的计数器减少1
        counter[c - 'a']--;
    }
    
    // 遍历计数器数组,检查是否有任何计数不为0
    for (int i : counter) {
        // 如果任何计数器的值不为0,则说明s和t不是变位词,返回false
        if (i != 0) {
            return false;
        }
    }
    
    // 如果所有计数器的值都为0,则说明s和t是变位词,返回true
    return true;
}

349. 两个数组的交集

在这里插入图片描述

题目链接:349. 两个数组的交集
文档讲解:代码随想录
状态:so easy

思路:首先使用一个计数器数组来记录 nums1 中每个元素的出现次数。然后,它检查 nums2 中的每个元素,如果该元素在 nums1 中出现过(即计数器数组中对应的值大于0),则将该元素在计数器数组中的值设置为 -1。之后,它遍历计数器数组,将所有值为 -1 的元素(即两个数组共有的元素)收集到一个 ArrayList 中。最后,将 ArrayList 中的元素复制到一个新的整型数组中,并返回这个数组。

题解:

public int[] intersection(int[] nums1, int[] nums2) {
    // 初始化一个大小为1001的计数器数组,用于存储每个数字的出现次数
    // 数组的大小可以根据实际需要调整,这里假设输入数组中的元素不会超过1000
    int[] counter = new int[1001];

    // 遍历数组nums1,对每个元素在计数器数组中对应的位置增加1
    for (int i : nums1) {
        counter[i]++;
    }
    
    // 遍历数组nums2,检查计数器数组中对应位置的值
    // 如果该位置的值大于0,说明此元素在nums1中出现过,将其设置为-1
    // 这里使用-1来标记nums1和nums2共有的元素
    for (int i : nums2) {
        if (counter[i] > 0) {
            counter[i] = -1;
        }
    }

    // 创建一个ArrayList,用于存储共有元素
    ArrayList<Integer> list = new ArrayList<>();
    
    // 遍历计数器数组,找出所有值为-1的元素,即nums1和nums2共有的元素
    for (int i = 0; i < counter.length; i++) {
        if (counter[i] == -1) {
            list.add(i);
        }
    }
    
    // 创建一个数组,大小为共有元素的个数
    int[] ans = new int[list.size()];
    
    // 初始化一个索引i,用于在ans数组中添加元素
    int i = 0;
    
    // 遍历ArrayList,将共有元素添加到ans数组中
    for (Integer integer : list) {
        ans[i++] = integer;
    }
    
    // 返回包含共有元素的数组
    return ans;
}

202. 快乐数

在这里插入图片描述

题目链接:202. 快乐数
文档讲解:代码随想录
状态:so easy

思路:通过使用一个 HashSet 来记录已经遍历过的数字,避免无限循环。如果数字 n 等于1,那么它是一个快乐数。

题解:

public boolean isHappy(int n) {
    // 创建一个HashSet,用于存储已经遍历过的数字
    HashSet<Integer> set = new HashSet<>();
    
    // 使用while循环进行操作,条件是当前数字n不在set中
    while (!set.contains(n)) {
        // 如果n等于1,根据快乐数的定义,返回true
        if (n == 1)
            return true;
        
        // 将当前数字n添加到set中,避免重复遍历
        set.add(n);
        
        // 调用getNum方法,计算n的下一个状态
        n = getNum(n);
    }
    
    // 如果循环结束,说明已经检测到循环,根据快乐数的定义,返回false
    return false;
}

public int getNum(int n) {
    int sum = 0;
    // 使用while循环,直到n变为0
    while (n != 0) {
        // 计算n的最后一位数字的平方,然后加到sum上
        sum += Math.pow(n % 10, 2);
        // 将n除以10并取整,去掉最后一位数字
        n /= 10;
    }
    // 返回计算得到的sum
    return sum;
}

1. 两数之和

在这里插入图片描述

题目链接: 1. 两数之和
文档讲解:代码随想录
状态:卡了一会儿,刚开始把所有的元素加入到HashMap中,然后再次遍历数组的时候去HashMap中找是否存在补数,这种方法没有考虑到重复元素的问题

题解:

    public int[] twoSum(int[] nums, int target) {
        // 创建一个HashMap,用于存储遍历过的数字及其索引
        HashMap<Integer, Integer> map = new HashMap<>();

        // 初始化一个长度为2的数组,用于存储两个数的索引
        int[] res = new int[2];

        // 遍历数组nums中的每个元素
        for (int i = 0; i < nums.length; i++) {
            // 检查map中是否存在当前元素的补数
            Integer val = map.get(target - nums[i]);

            // 如果map中存在当前元素的补数(即target - nums[i])
            if (val != null) {
                // 将补数的索引赋值给res[0]
                res[0] = val;
                // 将当前元素的索引i赋值给res[1]
                res[1] = i;
                // 返回包含两个数索引的数组
                return res;
            }

            // 将当前元素及其索引存入map中
            map.put(nums[i], i);
        }
        
        return res;
    }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

World Creator v2.1.0 解锁版安装教程 (GPU三维地形生成软件)

前言 World Creator是一款功能相当强大的地形景观生成器&#xff1b;可以完全根据自己的需求来对地形、景观生成您需要三维模型&#xff0c;内置的大量预设&#xff0c;让您的创建拥有无限的可能性。 一、下载地址 下载链接&#xff1a;http://dygod/ITSource 点击搜索&…

前后端部署笔记

windows版&#xff1a; 如果傻呗公司让用win电脑部署&#xff0c;类似于我们使用笔记本做局域网服务器&#xff0c;社内使用。 1.安装win版的nginx、mysql、node、jdk等 2.nginx开机自启参考Nginx配置及开机自启动&#xff08;Windows环境&#xff09;_nginx开机自启动 wind…

学习100个Unity Shader (18) --- 几何着色器(Geometry Shader)

文章目录 概述编写格式举例应用举例&#xff08;用预制体球的每个顶点画一个立方体&#xff09;参考 概述 vertex shader --> [geometry shader] --> fragment shader。[]: 可选阶段。输入图元 —> geometry shader —> 其他图元 编写格式 [maxcertexcount(N)] …

源码编译安装LAMP与部署

目录 一、LAMP架构的简述 1.LAMP搭建时各组件安装顺序 二、编译安装Apache httpd服务 1.关闭防火墙&#xff0c;将安装Apache所需软件包传到/opt目录下 2.安装环境依赖包​编辑 3.配置软件模块 4.编译及安装 5.优化配置文件路径&#xff0c;并把httpd服务的可执行程序文…

2024斯佩菈音乐剧暑假训练营 30天创造奇迹培育坚强自信好少年

以声问本&#xff0c;素质教育&#xff0c;融会中西&#xff0c;知行合一。音乐是生活的灵魂&#xff0c;艺术的真正意义在于使人幸福&#xff0c;得到鼓舞和力量。多一把衡量的尺子&#xff0c;就会多出一批好学生。 相对学校语数英等学科教育&#xff0c;孩子心灵成长方面很…

新建gitee项目关联idea中的springboot项目

新建项目关联仓库步骤 以gitee为例新建项目 进入gitee新建项目 新建项目后进入复制项目地址 可以直接拉取本项目然后再这个目录下创建各种功能&#xff0c;我习惯于以下步骤。 下一步再idea新建springboot项目 我使用的是idea2023 选择Manager remote 点击加号 新建一个远…

1+x(Java)中级题库易混淆理论题(二)

冷备份实质就是数据库相关文件的复制 System.in是字节流 Map集合中的key是无序的 protected不能用于修饰类 接口中所有抽象方法默认使用public修饰 DML操作有&#xff1a;INSERT UPDATE DELETE SQL 语句中进行 group by 分组时&#xff0c;可以不写 where 子句 使…

什么是HTTP代理?适用于哪些场景?

HTTP代理是一种网络代理服务器&#xff0c;它主要用于处理HTTP协议的请求和响应。HTTP代理充当客户端&#xff08;如浏览器&#xff09;和目标服务器之间的中介&#xff0c;允许客户端通过代理服务器来发送HTTP请求&#xff0c;并接收来自服务器的响应。HTTP代理可以分为正向代…

C语言文件编程

C语言文件编程 第一部分 基本概念 1、Linux文件类型 1.-普通文件&#xff1a;存在于外部存储器中&#xff0c;用于存储普通数据。 1.txt 1.c 1.mp3 1.mp4 2.d目录文件&#xff1a;用于存放目录项&#xff0c;是文件系统管理的重要文件类型。 文件夹 3.p管道文件&#x…

LDRA Testbed(TBrun)软件单元测试_操作指南

系列文章目录 LDRA Testbed软件静态分析_操作指南 LDRA Testbed软件静态分析_自动提取静态分析数据生成文档 LDRA Testbed软件静态分析_Jenkins持续集成_(1)自动进行静态分析的环境搭建 LDRA Testbed软件静态分析_Jenkins持续集成_(2)配置邮件自动发送静态分析结果 LDRA Testb…

探索循环逻辑:for逻辑分支与容器遍历的深度剖析

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;for逻辑与循环体的奥秘 二、for逻辑与循环体的结合使用 1. 函数与循环…

Python计算回归拟合各项指标

0、各项回归指标简介 Relative Root Mean Squared Error&#xff08;RRMSE&#xff09;&#xff1a;The RRMSE normalizes the Root Mean Squared Error (RMSE) by the mean of observations. It goes from 0 to infinity. The lower the better the prediction performance.T…

电脑不能远程桌面连接不上,电脑无法建立远程桌面连接如何解决?

电脑无法建立远程桌面连接的问题&#xff0c;通常涉及到多个层面的因素&#xff0c;包括但不限于网络设置、系统配置、防火墙设置以及服务状态等。以下是一些专业性的解决方案&#xff0c;以帮助您解决这一问题。 首先&#xff0c;我们需要检查网络连接。远程桌面连接需要稳定的…

Day08:CSS 高级

目标&#xff1a;掌握定位的作用及特点&#xff1b;掌握 CSS 高级技巧 一、定位 作用&#xff1a;灵活的改变盒子在网页中的位置 实现&#xff1a; 1.定位模式&#xff1a;position 2.边偏移&#xff1a;设置盒子的位置 leftrighttopbottom 水平方向偏移&#xff1a;left、…

电子商务网站(网上商店PetShop)

PetShop是一个范例&#xff0c;微软用它来展示.Net企业系统开发的能力。PetShop随着版本的不断更新&#xff0c;至现在基于.Net2.0的PetShop 4.0为止&#xff0c;整个设计逐渐变得成熟而优雅&#xff0c;有很多可以借鉴之处。PetShop是一个小型的项目&#xff0c;系统架构与代码…

【软件设计师】——7.软件工程基础

目录 7.1 软件工程概述 7.2 需求分析 7.3 软件设计 7.4 软件开发方法及模型 7.4.1 软件开发方法 7.4.2 软件开发模型 7.5 软件测试 7.6 软件维护 7.7 软件质量保证 7.7.1 软件质量特性 7.7.2 程序质量评审 7.7.3 设计质量评审 7.8 软件过程改进 7.9 项目管理 7.1 …

【制作100个unity游戏之26】unity2d横版卷轴动作类游13(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言存储点灯光后处理存储位置信息存储更多数据存储场景信息持久化存储数据引入Unity 的可序列化字典类调用 游戏结束源码完结 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各…

Appium系列(2)元素定位工具appium-inspector

背景 如实现移动端自动化&#xff0c;依赖任何工具时&#xff0c;都需要针对于页面中的元素进行识别&#xff0c;通过识别到指定的元素&#xff0c;对元素进行事件操作。 识别元素的工具为appium官网提供的appium-inspector。 appium-inspector下载地址 我这里是mac电脑需要下…

使用numpy手写一个神经网络

本文主要包含以下内容&#xff1a; 推导神经网络的误差反向传播过程使用numpy编写简单的神经网络&#xff0c;并使用iris数据集和california_housing数据集分别进行分类和回归任务&#xff0c;最终将训练过程可视化。 1. BP算法的推导过程 1.1 导入 前向传播和反向传播的总体…

编程-辅助工具-Git下载

文章目录 1、前言2、Git官网地址3、迅雷下载 1、前言 采用Git能下载github上的代码&#xff0c;其下载是采用官网下载的&#xff0c;但是下载速度比较慢&#xff0c;网上也推荐了镜像的方式&#xff0c;但是有些链接失效了&#xff0c;突然有一天想起用迅雷是不是合适&#xf…