牛客算法题解:数字统计、两个数组的交集、点击消除


目录

BC153 [NOIP2010]数字统计

▐ 题解

NC313 两个数组的交集

▐ 题解

AB5 点击消除

▐ 题解


BC153 [NOIP2010]数字统计

题目描述

题目链接: [NOIP2010]数字统计_牛客题霸_牛客网 (nowcoder.com)

▐ 题解

题目要求统计出某段数组中一共有多少个2,所以本质上就是将这段数据遍历一遍,对于每个数进行拆分,将每个数字的每一个位分别拿出来统计一下,如果有2,就用一个计数器保存累加结果。

import java.util.Scanner;public class Main {public static void main(String[] arg) {Scanner in = new Scanner(System.in);int l = in.nextInt();int r = in.nextInt();int count = 0;for(int i = l; i <= r; i++) {//遍历每一个数int temp = i;//拿出这个数while( temp != 0) {//对数字进行拆分操作if( temp % 10 == 2) {count++;}temp = temp / 10;//拆去原数字的个位,使剩下的位数继续进入while循环判断}}System.out.println(count);}
}

NC313 两个数组的交集

题目描述

题目链接:两个数组的交集_牛客题霸_牛客网

▐ 题解

对于求俩个数组的公共元素,可以通过哈希的思想,首先对其中一个数组进行哈希标记,再遍历另外一个数组的每一个元素,将其拿出来与先前标记的元素做对比,如果该数字在另外一个数组中存在哈希标记就说明他们是公共元素。

至于哈希的部分,由于我们的数据量较小,所以就不需要构建哈希容器,即不需要构建HashMap这样的集合容器,我们可以自定义一个布尔类型数组(hash[1024]),将其大小设置为1024,由于1024>1000,因此该数组不会溢出,对于数组1中的元素我们都在这个布尔数组中设置对应位置的布尔值,true代表数组1存在这样的元素,false代表不存在。

举个例子来说:对于数组1中的元素 ,我们就将布尔数组中下标为3的元素(hash[3])标记为 true,以此类推,当数组1遍历完了后,布尔数组中为 true 的位置的元素都是在数组1中存在的,为false的就是数组1中不存在的。

当我们遍历第二个数组的时候,只需要将元素拿出来与该值对应的布尔数组的下标所在元素进行对比,就比如我们拿出第二个数组的元素 3 后,我们只需要对比布尔数组中下标为 3 的元素(hash[3])就知道了 3 这个数字是否在数组1存在,由于我们之前将(hash[3])置为了true,因此我们就判断出数字 3 是俩个数组的共同元素。

import java.util.*;public class Solution {public ArrayList<Integer> intersection (ArrayList<Integer> nums1, ArrayList<Integer> nums2) {ArrayList<Integer> ret = new ArrayList<>();boolean[] hash = new boolean[1024];for(int x : nums1) {hash[x] = true;}for(int x : nums2) {if(hash[x] == true) {ret.add(x);hash[x] = false;}}return ret;}
}

AB5 点击消除

题目描述

题目链接: 点击消除_牛客题霸_牛客网

▐ 题解

该题目是非常符合栈这样的数据结构的思想的,相邻的元素就进行消除,我们可以将该字符串转化成一个字符数组,将这个字符数组放进栈里面,每一次进栈一个字符,进栈的时候判断当前元素和栈顶元素是否相同,如果相同就要执行消除操作,即弹出栈顶元素并且当前元素也不入栈;如果不相同就让当前元素进栈,如此反复,当数组元素全部放进栈之后我们就相对于得到了一个消除后的数组。政治

确定了使用栈这样的数据结构后,需要思考需要构建集合容器正真的实现一个栈吗?其实是没必要的,我们是对字符串进行操作,使用StringBuilder更加方便进行字符串的删除和拼接操作,因此我们可以用StringBuilder来模拟实现一个栈,通过字符串拼接append()的方法来达到入栈的目的,通过deleteCharAt()删除字符来完成出栈的目的。故而代码如下:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);char[] str = in.next().toCharArray();StringBuilder stack = new StringBuilder();//使用StringBuilder模拟实现一个栈,出栈相对于删除相同元素for(char x : str) {//遍历整个字符数组int len = stack.length();if(len == 0 || stack.charAt(len-1) != x) {//当栈为空、栈顶元素和当前元素不同则入栈stack.append(x);}else {//出栈,即消除相同元素stack.deleteCharAt(len-1);}}if(stack.length() == 0) {stack.append("0");//当所有元素都消除后,需要输出0}System.out.println(stack);}
}



 本次的分享就到此为止了,希望我的分享能给您带来帮助,创作不易也欢迎大家三连支持,你们的点赞就是博主更新最大的动力!如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步!有相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见

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

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

相关文章

关于Buffer和Channel的注意事项和细节

1.举例 package org.example.demo;import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.util.RandomAccess;/*** MappedByteBuffer可…

Linux入门级常用命令行(二)

目录 1、mv指令 2、rm指令 3、通配符* 4、chmod指令 5、tar指令 1、mv指令 功能 用于移动或重命名文件和目录的命令 基本用法 mv [选项] 源文件或目录 目标文件或目录 常用选项 -i&#xff1a;在覆盖文件之前提示用户确认。-f&#xff1a;强制移动或重命名&#xff0…

动量参数(Momentum Parameter)

动量参数&#xff08;Momentum Parameter&#xff09;在机器学习中指的是一种用于加速梯度下降算法的技术&#xff0c;特别是深度学习中优化神经网络权重时。简单来说&#xff0c;动量参数是一种帮助优化过程加速并减少震荡的技术。 具体来说&#xff0c;动量参数具有以下特点…

网络编程——wireshark抓包、tcp粘包

目录 一、前言 1.1 什么是粘包 1.2 为什么UDP不会粘包 二、编写程序 文件树 客户端程序 服务器程序 tcp程序 头文件 makefile 三、 实验现象 四、改进实验 五、小作业 一、前言 最近在做网络芯片的驱动&#xff0c;验证功能的时候需要借助wireshark这个工具&…

猫头虎分享:Numpy知识点一文带你详细学习np.random.randn()

&#x1f42f; 猫头虎分享&#xff1a;Numpy知识点一文带你详细学习np.random.randn() 摘要 Numpy 是数据科学和机器学习领域中不可或缺的工具。在本篇文章中&#xff0c;我们将深入探讨 np.random.randn()&#xff0c;一个用于生成标准正态分布的强大函数。通过详细的代码示…

Android Studio 一键删除 Recent Projects信息的方法

Android Studio打开项目多了就一堆最近项目的记录&#xff0c;在IDE里面只能一个个手动删除。 File - Recent Projects 解决方案&#xff1a;修改配置文件 Note&#xff1a;方法不唯一。 Android Studio 存储了一个包含最近打开项目信息的配置文件。通过手动编辑或删除recentP…

会员管理系统需求文档示例

1. 引言 目的&#xff1a; 本需求文档旨在明确会员管理系统的目标、功能和非功能性需求&#xff0c;以指导系统的设计、开发和测试过程。 背景&#xff1a; 随着公司业务的不断增长&#xff0c;我们需要一个高效、可靠的会员管理系统来帮助我们更好地管理客户关系、提高服务质…

科普文:kubernets原理

kubernetes 已经成为容器编排领域的王者&#xff0c;它是基于容器的集群编排引擎&#xff0c;具备扩展集群、滚动升级回滚、弹性伸缩、自动治愈、服务发现等多种特性能力。 本文将带着大家快速了解 kubernetes &#xff0c;了解我们谈论 kubernetes 都是在谈论什么。 一、背…

详细介绍BIO、NIO、IO多路复用(select、poll、epoll)

BIO、NIO、IO多路复用 BIO(Blocking IO)NIO(Non-blocking IO) 同步非阻塞IOIO多路复用selectpollepoll Redis的IO多路复用 BIO(Blocking IO) 最基础的IO模型&#xff0c;当进行IO操作时&#xff0c;线程会被阻塞&#xff0c;直到操作完成。 比如read和write&#xff0c;通常IO…

Python的输入规则

Python的输入特别有意思&#xff0c;它和C的输入不一样&#xff0c;它的输入的原型是类似于C的string类型&#xff0c;但是对于一些有意思的算法题来说&#xff0c;光是读入string型的内容并不容易解题&#xff0c;于是我们可以从两个方面来将输入给转化。 1. 先使用函数input…

SGLang 大模型推理框架 qwen2部署使用案例;openai接口调用、requests调用

参考: https://github.com/sgl-project/sglang 纯python写,号称比vllm、tensorRT还快 暂时支持模型 安装 可以pip、源码、docker安装,这里用的pip 注意flashinfer安装最新版,不然会可能出错误ImportError: cannot import name ‘top_k_top_p_sampling_from_probs’ fr…

ConcurrentHashMap 和 Hashtable 的区别

ConcurrentHashMap 概念 ConcurrentHashMap 和 Hashtable 的区别主要体现在实现线程安全的方式上不同JDK1.7的 ConcurrentHashMap 底层采用 分段的数组链表 实现JDK1.8 采用的数据结构是数组链表红黑二叉树在JDK1.7的时候&#xff0c;ConcurrentHashMap&#xff08;分段锁&…

EtherNet/IP转Profinet协议网关(经典配置案例)

怎么样才能把EtherNet/IP和Profinet网络连接起来呢?这几天有几个朋友问到了这个问题&#xff0c;作者在这里统一为大家详细说明一下。其实有一个设备可以很轻松地解决这个问题&#xff0c;名为JM-PN-EIP&#xff0c;下面是详细介绍。 一&#xff0c;设备主要功能 1、捷米特J…

LLMs之Hallucinations :《Extrinsic Hallucinations in LLMs》翻译与解读

LLMs之Hallucinations &#xff1a;《Extrinsic Hallucinations in LLMs》翻译与解读 导读&#xff1a; >> 背景和痛点&#xff1a;LLMs中的幻觉指生成不真实、虚构(或捏造)、不一致或无意义的内容。这种现象被称为幻觉&#xff08;hallucination&#xff09;。这种现象可…

nodepad++已打开的文件怎么按照字母/文字顺序排列?

nodepad已打开的文件怎么按照字母/文字顺序排列&#xff1f; 点击菜单栏 “窗口” -> “排序方式” &#xff08;可选择升序或降序&#xff09;

加密货币赋能跨境电商:PayPal供应链金融服务如何引领行业新趋势

跨境电商行业近年来呈现出爆发式增长&#xff0c;随着全球化贸易壁垒的降低和数字经济的快速发展&#xff0c;越来越多的商家和消费者跨越国界进行交易。根据eMarketer的数据&#xff0c;全球跨境电商交易额在2023年已超过4万亿美元&#xff0c;并预计在未来几年内仍将保持两位…

centos7 xtrabackup mysql(8)增量备份(1)

centos7 xtrabackup mysql&#xff08;8&#xff09;增量备份&#xff08;1&#xff09; 参考 xtrabackup-8.0的安装、备份以及恢复&#xff08;innoxtrabackup有待测试&#xff09; https://blog.csdn.net/DWJRIVER/article/details/117792271 https://blog.csdn.net/qq_28…

开发环境搭建——Tomcat安装配置

一、Tomcat安装 1、解压下载好的安装包&#xff0c;将解压后的文件放到任意一个盘中&#xff0c;注意&#xff0c;尽量不要有中文 2、运行Tomcat&#xff0c;测试Tomcat是否正常连接使用 双击bin目录下的startup.bat文件&#xff0c;启动Tomcat 出现下面的界面标识Tomcat启动…

顺序栈和链栈的操作实现

目录 一. 前言 二.顺序栈 三. 链栈 一. 前言 简而言之&#xff0c;顺序栈就是栈的顺序存储&#xff0c;链栈就是栈的链式存储。 二.顺序栈 下面我们来看下顺序栈的结构定义&#xff1a; typedef char SElemType; #define MAXSIZE 100 typedef struct{SElemType * base; //…

使用git命令行的方式,将本地项目上传到远程仓库

在国内的开发环境中&#xff0c;git的使用是必不可少的。Git 是一款分布式版本控制系统&#xff0c;用于有效管理和追踪文件的变更历史及协作开发。本片文章就来介绍一下怎样使用git命令行的方式&#xff0c;将本地项目上传到远程仓库&#xff0c;虽然现在的IDE中基本都配置了g…