集合框架(数组,Arrays.sort,list,map,set,stack,queue)蓝桥杯习题
前言(基本知识)
List集合
有序,接口,
List<引用数据类型> list=new ArrayList<>();
方法: add() size() get()//索引index从0开始,返回对应的值
isEmpty()判断是否包含该元素,不包含返回true,包含返回false
contains() // 是否包含指定元素 ,包含true remove()//删除并返回被删除的元素
数组,集合排序
Arrays.sort() //默认升序,定义数组使用引用数据类型
Collections.sort()
Set集合
不允许重复,无序
方法: Set<Integer> set=new HashSet<>();
常用于判断重复元素时
add() size() contains() // 是否包含指定元素 ,包含true
remove()//删除元素,删除成功返回true
clear() //清除所有元素
Map集合
散列表(key-value)映射,无序
方法:Map<Integer,Integer> map=new HashMap<>();
put(键,值) get(键)//对应键的值,没有返回null size()
entrySet() //map集合的每个键值转换entry对象,返回entry对象组成的Set集合。
for(entry<Integer,Integer> entry map.entrySet()){
//遍历map集合的一种方法(模板),通过map集合的entrySet方法将map集合转化成一个entry类型的数组
System.out.print(map.getKey()+" " map.getValue());
}
getOrDefault(键,值)//获取键对应的值,找不到返回默认值
Stack集合
先进后出
方法:Stack<Integer> stack=new Stack<>();
pop()//删除顶部元素 peek();//查看顶部元素并返回 push()//从顶部压入
isEmpty();//判断是否为空
Queue集合
先进先出
方法:Queue<Integer> queue=new Linkedlist<>();
是 boolean add();//队尾压入元素,并返回是否压入成功 poll()//删除并返回被删除的元素
peek()//查看队尾元素 isEmpty()//队列是否为空
编号1389二分查找数组元素
题目描述
给定一个数组,其采用如下代码定义:
int data[200];
for(i = 0 ; i < 200 ; i ++)data[i] = 4 * i + 6;
先给定某个数(在 data 数组中),请你求出它在数组中的位置。
输入描述
输入一个待查找的整数(该整数一定在数组data中)。
输出描述
输出该整数在数组中的指标。
输入输出样例
示例 1
输入
262
输出
64
示例 2
输入
438
输出
108
代码
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...int []data=new int[200];for(int i=0;i<200;i++){data[i]=4*i+6;}int a=scan.nextInt();int c=0;for(int i=0;i<200;i++){if(a==data[i]){c=i;}}System.out.println(c);scan.close();}
}
编号539明明的随机数
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个 1 到 1000 之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入描述
第 1 行为 1 个正整数,表示所生成的随机数的个数:N。
第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。
输出描述
输出 2 行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数。
第 2 行为 M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
输入输出样例
示例 1
输入
10
20 40 32 67 40 20 89 300 400 15
输出
8
15 20 32 40 67 89 300 400
代码
直接使用list.contain()也能完成去重操作
package lanqiaoyun;
import java.util.*;public class jihe539 {public static void main(String[] args) {// TODO Auto-generated method stubScanner scan=new Scanner(System.in);int n=scan.nextInt();int []arr=new int [n];List<Integer> list=new ArrayList<>();for(int i=0;i<n;i++) {arr[i]=scan.nextInt();//System.out.print(list);}for(int i=0;i<n;i++) {if(!list.contains(arr[i])) {list.add(arr[i]);}}Collections.sort(list);System.out.println(list.size());for(int x:list) {System.out.print(x+" ");}}}
使用set.contain()
package lanqiaoyun;
import java.util.*;public class jihe539 {public static void main(String[] args) {// TODO Auto-generated method stubScanner scan=new Scanner(System.in);int n=scan.nextInt();int []arr=new int [n];List<Integer> list=new ArrayList<>();Set<Integer> set=new HashSet<>();for(int i=0;i<n;i++) {arr[i]=scan.nextInt();//System.out.print(list);}for(int i=0;i<n;i++) {if(!set.contains(arr[i])) {set.add(arr[i]);list.add(arr[i]);}}Collections.sort(list);System.out.println(list.size());for(int x:list) {System.out.print(x+" ");}}}
编号map
问题描述
输入一个数字n(n<=1e5),然后输入一个长度为n的数组an(-1e9<=ai<=1e9),请你输出出现频率最大的数。如果由多个数频率相同,按从小到大依次输出。
示例:
输入 5 1 1 2 2 0
输出 1 2
代码
package lanqiaoyun;
import java.util.*;
import java.util.Map.Entry;public class teshu {public static void main(String[] args) {// TODO Auto-generated method stubScanner scan=new Scanner(System.in);int n=scan.nextInt();Map<Integer,Integer> map=new HashMap<>();/*for(Entry <Integer,Integer> entry:map.entrySet()) {System.out.println(entry.getKey()+" "+entry.getValue());}System.out.println(max);for(Entry <Integer,Integer> entry:map.entrySet()) {if( map.entryValue()==max) {//System.out.print(a[i]+" ");}}*/for(int i=0;i<n;i++) {int a=scan.nextInt();map.put( a, map.getOrDefault(a, 0)+1);}long max=Integer.MIN_VALUE;for(Entry<Integer, Integer> entry:map.entrySet()) {if(entry.getValue()>max) {max=entry.getValue();}}List<Integer> list=new ArrayList<>();for(Entry<Integer, Integer> entry:map.entrySet()) {if(entry.getValue()==max) {list.add(entry.getKey());// System.out.print(entry.getKey()+" ");}}Collections.sort(list);for(int i:list) {System.out.print(i+" ");}}}
编码2490小蓝的字符串
问题描述
小蓝有一个长度为 n 的括号串,括号串仅由字符 ( 、 ) 构成,请你帮他判断一下该括号串是否合法,合法请输出 Yes ,反之输出 No 。
合法括号序列:
-
空串是合法括号序列。
-
若 s 是合法括号序列,则
(s)也是合法括号序列。 -
若 s,t 都是合法括号序列,则 st 也是合法括号序列。
例如 ()() , (()) , (())() 均为合法括号序列。
输入格式
第一行包含一个正整数 n ,表示括号串的长度。
第二行包含一个长度为 n 的括号串。
输出格式
输出共 11 行,若括号串合法请输出 Yes ,反之输出 No 。
样例输入1
10
(()(()))()
样例输出1
Yes
样例输入2
5
()()(
样例输出2
No
代码
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...int n=scan.nextInt();char []a=scan.next().toCharArray();Stack<Character> stack=new Stack<>();int count=n;for(int i=0;i<n;i++) {if(a[i]=='(') {stack.push(a[i]);}else if(a[i]==')') {if(!stack.isEmpty()) {stack.pop();count=count-2; }else {//System.out.println("No");break;}}}if(stack.isEmpty()&&count==0) {System.out.println("Yes");}else {System.out.println("No");}}}
编号1265排序
题目描述
给定一个长度为 N 的数组 A,请你先从小到大输出它的每个元素,再从大到小输出它的每个元素。
输入描述
第一行包含一个整数 N。
第二行包含 N 个整数a1,...,an,表示数组 A 的元素。
1≤N≤5×105,−109≤ai≤109。
输出描述
输出共两行,每行包含 N 个整数,表示答案。
输入输出样例
示例 1
输入
5
1 3 2 6 5
输出
1 2 3 5 6
6 5 3 2 1
代码
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan=new Scanner(System.in);long n=scan.nextLong();List<Long> list=new ArrayList<>();for(long i=0;i<n;i++){list.add(scan.nextLong());}Collections.sort(list);for(long x:list) {System.out.print(x+" ");}Collections.sort(list,new Comparator<Long>(){@Overridepublic int compare(Long o1, Long o2) {// TODO Auto-generated method stubreturn Long.compare(o2, o1);}});System.out.println(" ");for(long x:list) {System.out.print(x+" ");}}}
编号782拼数
问题描述
给定 n 个正整数a1,a2,…,an,你可以将它们任意排序。
现要将这 n 个数字连接成一排,即令相邻数字收尾相接,组成一个数。
问,这个数最大可以是多少。
输入格式
第一行输入一个正整数 n(1≤n≤20)。
第二行输入 n 个正整数a1,a2,…,an(1≤ai≤105)。
输出格式
输出一个整数,表示答案。样例输入
3
13 312 343
样例输出
34331213
代码
package lanqiaoyun;
import java.util.*;public class a782 {public static void main(String[] args) {// TODO Auto-generated method stubScanner scan=new Scanner(System.in);int n=scan.nextInt();String []str=new String[n];for(int i=0;i<n;i++) {str[i]=scan.next();}Arrays.sort(str,(o1,o2)->(o2+o1).compareTo(o1+o2));StringBuilder st=new StringBuilder();for(String i:str) {st.append(i);}System.out.println(st);/*for(int i=0;i<n;i++) {list.add(scan.nextLong());}/** for(int x:list) {}*/}}
编号2122数位排序
问题描述
小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当 两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。
例如, 2022 排在 409 前面, 因为 2022 的数位之和是 6, 小于 409 的数位 之和 13 。
又如, 6 排在 2022 前面, 因为它们的数位之和相同, 而 6 小于 2022 。
给定正整数 n,m, 请问对 1 到 n 采用这种方法排序时, 排在第 m 个的元 素是多少?
输入格式
输入第一行包含一个正整数 n 。
第二行包含一个正整数 m 。
输出格式
输出一行包含一个整数, 表示答案。
样例输入
13
5
样例输出
3
代码
import java.util.Scanner;
import java.util.Arrays;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...int n = scan.nextInt();int m = scan.nextInt();Integer[] array = new Integer[n];for (int i = 0; i < n; i++) {array[i] = i + 1;}Arrays.sort(array, (o1, o2) -> digitSum(o1) != digitSum(o2) ? digitSum(o1) - digitSum(o2) : o1 - o2);System.out.println(array[m - 1]);scan.close();}private static int digitSum(Integer num) {int ans = 0;while (num > 0) {ans += num % 10;num /= 10;}return ans;}
}
残缺品(通过率有问题)
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...long n=scan.nextLong();long m=scan.nextLong();List<Long> list=new ArrayList<>();for(long i=0;i<n;i++) {list.add(i+1);}Collections.sort(list,new Comparator<Long>() {@Overridepublic int compare(Long o1, Long o2) {// TODO Auto-generated method stubint c=(int) (o2-o1);if(su(o1)>su(o2)) {c=(int) (o1-o2);}else if(su(o1)==su(o2)) {if(o1>o2) {c=(int) (o1-o2);}}return c;}public long su(long x) {long sum=0;while(x!=0) {sum=sum+x%10;x=x/10;}return sum;}});/*for(long x:list) {System.out.print(x+" ");}*/System.out.println(list.get((int) m-1));}}
相关文章:
集合框架(数组,Arrays.sort,list,map,set,stack,queue)蓝桥杯习题
前言(基本知识) List集合 有序,接口, List<引用数据类型> listnew ArrayList<>(); 方法: add() size() get()//索引index从0开始,返回对应的值 isEmpty()判断是否包含该元素,不包含返回true,包含返…...
【C++基础】运算符和流程控制语句
C中的运算符和流程控制语句 一、运算符1. C和Java在通用运算符中的不同之处对比2. C中的位运算符2.1 移位运算符2.2 位逻辑运算符 3. 运算时的类型转换总结3.1 隐式类型转换3.2 显式类型转换(强制类型转换) 4. 注意 二、流程控制语句1. C和Java在通用流程…...
AOF文件重写
1.2.3.AOF文件重写 因为是记录命令,AOF文件会比RDB文件大的多。而且AOF会记录对同一个key的多次写操作,但只有最后一次写操作才有意义。通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。 如图&am…...
第四次面试总结 — 嘉和智能 - 全栈开发
🧸欢迎来到dream_ready的博客,📜相信您对专栏 “本人真实面经” 很感兴趣o (ˉ▽ˉ;) 专栏 —— 本人真实面经,更多真实面试经验,中大厂面试总结等您挖掘 目录 总结(非详细) 面试内…...
tx-lcn使用
tx-lcn是啥 tx-lcn是一个分布式事务框架,有两个模块组成管理端(server)和client端。 管理端用于分布式事务的注册,事务消息接收,事务消息下发等管理工作。 client端包括事务发起方,事务参与方。 LCN名称是…...
oracle恢复异常处理
问题现象: RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14> 15> 16> 17> 18> 19> 20> 21> 22> 23> 24> using target database control file instead of recovery catalog allocate…...
谈谈什么是 Redis
🔥博客主页:fly in the sky - CSDN博客 🚀欢迎各位:点赞👍收藏⭐️留言✍️🚀 🎆慢品人间烟火色,闲观万事岁月长🎆 📖希望我写的博客对你有所帮助,如有不足,请指正&#…...
备战蓝桥杯(java)(日益更新)
备战蓝桥杯(java)(日益更新) 文章目录 备战蓝桥杯(java)(日益更新)前言:一、c 到 java 须要注意的地方:二、多练java代码:(用java代码…...
06 Php学习:字符串
PHP 中的字符串变量 在 PHP 中,字符串是一种常见的数据类型,用于存储文本数据。字符串变量可以包含字母、数字、符号等字符,并且可以进行各种操作和处理。以下是关于 PHP 中字符串变量的一些重要信息: 定义字符串变量࿱…...
python画图Matplotlib和Seaborn
python画图Matplotlib和Season 一、Matplotlib1、介绍2、安装3、内容二、Seaborn1、介绍2、安装3、内容一、Matplotlib Matplotlib官网 1、介绍 Matplotlib 是一个 Python 的绘图库,用于创建高质量的二维图表和一些基本的三维图表。它广泛应用于科学计算、数据分析、工程学和…...
一体式I/O模块与RS485串口联动,实现工业网络无缝对接
在现代工业自动化领域中,一体化I/O模块和RS485串口的联动应用已经成为实现工业设备高效、稳定通信的关键技术手段之一。这种联动机制能够有效地将各种现场设备的数据实时、准确地传输到上位机系统,从而实现工业网络的无缝对接。 一体化I/O模块ÿ…...
如何在Uniapp真机中使用H.265无插件流媒体播放器EasyPlayer
流媒体播放器EasyPlayer是TSINGSEE青犀流媒体组件系列中关注度较高的产品,经过多年的发展和迭代,目前已经有多个应用版本,包括RTSP版、RTMP版、Pro版,以及js版,其中js版本作为网页播放器,受到了用户的广泛使…...
【MySQL数据库 | 第二十五篇】深入探讨MVCC底层原理
前言: 在当今互联网时代,数据库扮演着数据存储和管理的关键角色。对于大型Web应用程序和企业级系统而言,高效地处理并发访问和事务管理是至关重要的。多版本并发控制(MVCC)是一种数据库事务处理的技术,旨…...
【LAMMPS学习】八、基础知识(1.6) LAMMPS 与其他代码耦合
8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…...
ArrayList中多线程的不安全问题
ArrayList中的不安全问题 正常的输出 List<String> list Arrays.asList("1","2","3"); list.forEach(System.out::println);为什么可以这样输出,是一种函数是接口,我们先过个耳熟 Arrys.asList是返回一个ArrayL…...
ALTER TABLE 之 定点变更(in-place alter)
定点变更算法可以提供优于慢速变更算法的诸多性能优势: 定点变更算法: 1,增加了表的可用性 ALTER TABLE操作使用定点变更算法时,其他用户稍后可以访问该表,因为数据库服务器只在更新表定义和重建包含更改列的索引时才锁…...
【RAG实践】Rerank,让大模型 RAG 更近一步
RAGRerank原理 上一篇【RAG实践】基于LlamaIndex和Qwen1.5搭建基于本地知识库的问答机器人 我们介绍了什么是RAG,以及如何基于LLaMaIndex和Qwen1.5搭建基于本地知识库的问答机器人,原理图和步骤如下: 这里面主要包括包括三个基本步骤&#…...
私有化客服系统:在线客服搭建与部署的创新之路
随着互联网技术的飞速发展,企业与客户之间的沟通方式也在不断地演变。在这个信息爆炸的时代,一个高效、便捷、智能的在线客服系统成为了企业提升服务质量、增强客户满意度的重要工具。本文将详细介绍在线客服系统的构建、部署以及私有化客服的优势&#…...
VM-UNet: Vision Mamba UNet for Medical Image Segmentation
VM-UNet: Vision Mamba UNet for Medical Image Segmentation VM-UNet:基于视觉Mamba UNet架构的医学图像分割 论文链接:http://arxiv.org/abs/2402.02491 代码链接:https://github.com/JCruan519/VM-UNet 1、摘要 文中利用状态空间模型SS…...
面向对象编程:在Python中的面向对象编程奥秘
面向对象编程在Python中的奥秘 在编程的世界里,面向对象编程(Object-Oriented Programming,简称OOP)是一种非常重要的编程范式。它改变了我们思考问题和设计代码的方式。Python作为一种支持面向对象的语言,为我们提供…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
