集合框架(数组,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 。

合法括号序列:

  1. 空串是合法括号序列。

  2. 若 s 是合法括号序列,则 ( s ) 也是合法括号序列。

  3. 若 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));}}

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

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

相关文章

从零开始为香橙派orangepi zero 3移植主线linux——2.kernel + rootfs

从零开始为香橙派orangepi zero 3移植主线linux——2.kernel rootfs 参考文章&#xff1a;一、linux kernel移植二、根文件系统2.1 buildroot构建1.修改toolchain下的交叉编译链2.修改系统配置3.去除内置kernel和uboot编译4.添加rootfs.tar格式的输出 2.2 ubuntu-base移植 三、…

代码随想录算法训练营第二十九天| 491.递增子序列、46.全排列、47全排列II

系列文章目录 目录 系列文章目录491.递增子序列回溯法使用 HashSet 作为哈希表进行树层去重使用 数组 作为哈希表进行树层去重&#xff08;最快&#xff09;使用 HashMap 作为哈希表进行树层去重 46.全排列回溯法使用used数组&#xff0c;标记已经选择的元素直接通过LinkedList…

python学习面向对象之继承的那些事儿

都说python里都是对像&#xff0c;所以选择了python&#xff0c;都说人生苦短&#xff0c;我用python&#xff0c;想用它当然就得了解它&#xff0c;爱它&#xff0c;并懂它。 序章 话说盘古开天辟地&#xff0c;女娲补天的时候&#xff0c;天地间一片混沌&#xff0c;女娲开…

Linux gcc day4 权限

首先来看比如ls、pwd等究竟是什么呢&#xff1f; 那ls是如何在shell中执行起来的呢&#xff1f;shell命令又是什么呢&#xff1f; shell命令&#xff1a;命令行解释器&#xff1a;表现&#xff1a;你看到的命令行提示符&#xff0c;以及可以输入指令并且可以执行&#xff08;是…

解决大模型,你是谁的问题

通过数据微调解决&#xff0c;数据如下 [{"id": "way0", "conversations": [{"from": "user", "value": "你是谁&#xff1f;"}, {"from": "assistant", "value": &quo…

贪心算法简介

目录 一、什么是贪心算法&#xff1f; 二、贪心算法的特点 三、贪心算法解决找零问题、最短路径问题、背包问题 1.找零问题 2.最短路径问题 3.背包问题 一、什么是贪心算法&#xff1f; 贪心算法就是希望通过局部最优来解决全局最优 基本步骤&#xff1a;1.将问题分为若…

【I/O】Unix IO 介绍

IO 模型&#xff08;一&#xff09; Unix IO 一个输入操作共包含两个阶段&#xff1a; 等待数据准备好从内核将数据复制到进程 对于一个套接字上的输入操作&#xff0c;通常第一步是等待数据从网络中到达&#xff0c;当数据到达时&#xff0c;先将数据复制到内核缓冲区中&a…

【UE 委托】如何利用函数指针理解委托的基本原理

目录 0 引言1 函数指针模拟多播委托 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;UE虚幻引擎专栏&#x1f4a5; 标题&#xff1a;【UE 委托】如何利用函数指针理解委托的基本原理❣️ 寄语&#xff1a;书到用时方恨少&#xff0c;事非经过不知难…

力扣239滑动窗口最大值——java中双端队列的一些知识

这道题. - 力扣&#xff08;LeetCode&#xff09;涉及到了双端队列的知识点&#xff0c;这里记录一下。Deque是可以从头部或者尾部来进行操作的。 Deque 是 Java 中双端队列&#xff08;Double Ended Queue&#xff09;的接口&#xff0c;它继承自 Queue 接口。双端队列允许在…

js base64 img 转 file

打印canvas图像的dataurl const imgDataUrl canvas.toDataURL();console.log(imgDataUrl)上传的图像编码 1,把base64编码转为文件对象第一个参数dataUrl是一个base64的字符串。第二个参数是文件名可以随意命名funtion base64toFile(dataurl, filename file) {let arr datau…

VSCode配置settings.json

快捷键 ctrl, 打开设置&#xff0c;右上角运行箭头的右边的那个图标&#xff0c;鼠标放到上面可以看到 “打开设置(json)” 点击它就能打开settings.json配置文件 常用的配置选项 "files.autoSave": "onWindowChange",// 当窗口失去焦点时&#xff0c;会…

Git 安装和配置

下载 Git 网址: https://git-scm.com/download 安装 Git 双击安装包, 开始安装. 修改安装路径, 选择非中文无空格路径: 开始安装: 安装成功: 配置 Git 安装完成后, 在任意文件夹内, 右键, 可以显示两个 Git 选项, 就说明安装成功了.

002 springboot整合mybatis-plus

文章目录 TestMybatisGenerate.javapom.xmlapplication.yamlReceiveAddressMapper.xmlreceive_address.sqlReceiveAddress.javaReceiveAddressMapper.javaIReceiveAddressServiceReceiveAddressServiceImpl.javaReceiveAddressController.javaTestAddressService.javaSpringboo…

汇舟问卷:海外问卷调查适合哪些人群去参与?

大家好&#xff0c;我是汇舟问卷。关于海外问卷调查这个项目最近一直备受关注&#xff0c;那么这个项目究竟有哪些人群适合参与进来呢&#xff1f;我们一起来看看。 第一&#xff0c;海外问卷调查适合一些没有找到工作或者拥有充足业余时间的人。只要您拥有一台电脑和网络连接…

IDEA 解决 java: 找不到符号 符号: 类 __ (使用了lombok的注解)

原因IDEA版本太高&#xff0c;在 ProcessingEnvironement 预编译的时候是以代理的方式来执行的&#xff0c;不再是直接 javac方式, lombok依赖的 javac方式的 annotation processors 不再生效了 解决办法&#xff1a;下面这一句&#xff0c;加在下图中 -Djps.track.ap.depen…

关于帆软报表取OA选择框-下拉列表值的解决方案

问题&#xff1a;制度一览表每次在OA端增加或修改制度类别后&#xff0c;都要在帆软报表修改后才能正确显示。 原因分析&#xff1a;以前大家没有找到OA下拉列表的维护表&#xff0c;采用的是在帆软端通过内置数据集来解决&#xff0c;需要人工维护。 解决方案&#xff1a; …

Linux函数学习 epoll

1、Linux epoll函数 1.1、创建epoll实例 int epoll_create1(int flag); 返回值&#xff1a;-1 失败&#xff0c;非负数 成功 flag &#xff1a;默认传入0 1.2、管理epoll对象 int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); epfd &#xff1a;e…

rebase和merge的区别

合并分支用rebase还是merge&#xff1f; 实际开发工作的时候&#xff0c;我们都是在自己的分支开发&#xff0c;然后将自己的分合并到主分支&#xff0c;那合并分支用2种操作&#xff0c;这2种操作有什么区别呢&#xff1f; git上新建一个项目&#xff0c;默认是有master分支…

“_, preds_m = torch.max(cls + cou2cls, 1)”为什么要将两者相加

将cls&#xff08;分类预测&#xff09;和cou2cls&#xff08;分类和计数的组合预测&#xff09;相加是一种常见的集成学习技术&#xff0c;目的是结合两种预测结果的优势来提高整体预测的准确性。在这个特定的场景中&#xff0c;有几个可能的原因和好处&#xff1a; 1. 信息融…

蓝桥杯物联网竞赛_STM32L071KBU6_我的全部省赛及历年模拟赛源码

我写的省赛及历年模拟赛代码 链接&#xff1a;https://pan.baidu.com/s/1A0N_VUl2YfrTX96g3E8TfQ?pwd9k6o 提取码&#xff1a;9k6o