【Java笔试强训 21】

news2024/9/22 23:16:11

🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!

欢迎志同道合的朋友一起加油喔🤺🤺🤺


 目录

一、选择题

二、编程题

   🔥 洗牌

   🔥MP3光标位置 



一、选择题

1、设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度()
A O(log2n)
B O(1)
C O(n2)
D O(n)
正确答案: D
2、一个栈的初始状态为空。首先将元素5,4,3,2,1 依次入栈,然后退栈一次,再将元素A,B,C,D依次入栈,之后将所有元素全部退栈,则所有元素退栈(包括中间退栈的元素)的顺序为?
A 1DCAB2345
B 1DCBA2345
C 54321ABCD
D DCBA12345
正确答案: B
3、设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次压入栈S,一个元素出栈后即进入队列Q,若出队列的顺序为e2,e4,e3,e6,e5,e1则栈S的容量要求最小值为
A 2
B 3
C 4
D 5
正确答案: B
4、给定下列程序,那么执行printf(“%d\n”, foo(20, 13));的输出结果是________。

int foo(int x, int y){
if (x <= 0 || y <= 0)
return 1;
return 3 * foo( x-6, y/2 );
}

A 3
B 9
C 27
D 81
正确答案: D
参考答案:
解析:foo(20, 13) = 3 * foo(14, 6) = 3 * 3 * foo(8, 3) = 3 * 3 * 3 * foo(2, 1) = 3 * 3 * 3 * 3 * foo(-4, 0) =3 * 3 * 3 * 3 * 1 = 81
答案:D
5、在具有 2n 个结点的完全二叉树中,叶子结点个数为( )
A n
B n+1
C n-1
D n/2
正确答案: A
参考答案:
完全二叉树是指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。根据完全二叉树性质,如果共 2n 个结点,从根结点开始按层序用自然数 1 , 2 ,…, 2n 给结点编号,则编号为 n 的结点左子结点编号为 2n ,因此叶子结点编号为 n+1,n+2, … ,2n 。故叶子结点个数为 n ,本题
答案为 A 选项。
6、下列叙述中错误的是( )
A 二叉链表是二叉树的存储结构
B 循环链表是循环队列的存储结构
C 栈是线性结构
D 循环队列是队列的存储结构
正确答案: B
参考答案:
循环队列是队列的一种顺序存储结构,用队尾指针 rear 指向队列中的队尾元素,用排头指针 front 指向排头元素的前一个位置。循环链表是用不连续的存储单元存储数据,它有一个表头结点,队头指针指向表头结点,最后一个结点的指针域指向表头结点。二叉链表是树的二叉链表实现方式。栈是一种特殊存取方式的线性表。故本题答案为 B 选项。
7、下述二叉树中,哪一种满足性质:从任一结点出发到根的路径上所经过的结点序列按其关键字有序()
A 二叉排序树
B 哈夫曼树
C AVL树
D 堆
正确答案: D
8、为提高散列(Hash)表的查找效率,可以采取的正确措施是( )。
Ⅰ.增大装填(载)因子
Ⅱ.设计冲突(碰撞)少的散列函数
Ⅲ.处理冲突(碰撞)时避免产生聚集(堆积)现象
A 仅Ⅰ
B 仅Ⅱ
C 仅Ⅰ、 Ⅱ
D 仅Ⅱ、 Ⅲ
正确答案: D
9、将整数数组(7-6-3-5-4-1-2)按照堆排序的方式原地进行升序排列,请问在第一轮排序结束之后,数组的顺序是_____。
A 2-6-3-5-4-1-7
B 6-2-3-5-4-1-7
C 6-5-3-2-4-1-7
D 1-5-3-2-4-6-7
E 5-4-3-2-1-6-7
F 5-1-3-2-4-6-7
正确答案: C
10、下列各排序法中,最坏情况下的时间复杂度最低的是( )
A 希尔排序
B 快速排序
C 堆排序
D 冒泡排序
正确答案: C
参考答案:
堆排序最坏情况时间下的时间复杂度为 O(nlog2n) ;希尔排序最坏情况时间下的时间复杂度为 O(n1.5) ;快速排序、冒泡排序最坏情况时间下的时间复杂度为O(n2) 。故本题答案为 C 选项。


二、编程题

     🔥 洗牌

    洗牌_牛客题霸_牛客网

 【解题思路】:
每次读取一个数之后,算出他经过k次洗牌后的位置,只用一个长度为2n数组用来输出
根据当前数的位置,可以算出经过一次洗牌后的位置
如果当前数小于等于n(即在左手),则他下次出现的位置是 2当前位置
与之对应的当前位置 + n(即在右手)的牌,则他下次出现的位置是 2当前位置 + 1

import java.util.*;
public class Main{
    public static void playCard(int[] cards, int n, int k){
        // i --> 2 * i
         // i + n ---> 2 * i + 1
        for(int i = 0; i < k; ++i){
             //一次洗牌的过程
            int[] newCards = new int[cards.length];
            //遍历编号为 0 ~ n - 1
                for(int j = 0; j < n; ++j){
                        newCards[2 * j] = cards[j];
                        newCards[2 * j + 1] = cards[j + n];
                }
            cards = newCards;
        }
        //从上往下打印
        printCard(cards);
    }
    public static void printCard(int[] cards){
        for(int i = 0; i < cards.length - 1; ++i){
            System.out.print(cards[i] + " ");
        }
        System.out.println(cards[cards.length - 1]);
    }
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        int groups = s.nextInt();
        for(int i = 0;i < groups; ++i){
            //读入每组数据
            int n = s.nextInt();
            int k = s.nextInt();
            int[] cards = new int[2 * n];
            for(int j = 0; j < 2 * n; ++j){
                cards[j] = s.nextInt();
            }
            //洗牌
            playCard(cards, n, k);
        }
    }
}

🔥MP3光标位置 

MP3光标位置_牛客题霸_牛客网

 【解题思路】:
本题比较简单,通过解析指令,进行移动即可,分两种情况,歌曲数目不大于4和大于4的情况。

import java.util.*;
import java.io.*;
public class Main{
    public static void mouseMove(String numStr, String orderStr){
        //歌曲数量
        int n = Integer.parseInt(numStr);
        //指令数组: UD
        char[] order = orderStr.toCharArray();
        //当前鼠标所在的位置
        int mouse = 1;
        //显示列表所在的起始位置
        int first = 1;
        //指令处理
        //n <=4
        if(n <= 4){
            //循环处理每一个指令
            for(int i = 0; i < order.length; ++i){
                //光标在第一首歌曲上时,按Up键光标挪到最后一首歌曲
                if(mouse == 1 && order[i] == 'U')
                    mouse = n;
                //光标在最后一首歌曲时,按Down键光标挪到第一首歌曲
                else if(mouse == n && order[i] == 'D')
                        mouse = 1;
                //其他情况下用户按Up键,光标挪到上一首歌曲
                else if(order[i] == 'U')
                        --mouse;
                //用户按Down键,光标挪到下一首歌曲
                else if(order[i] == 'D')
                        ++mouse;
                }
                //输出
                //打印当前的显示列表
                for(int i = 1; i < n; ++i)
                    System.out.print(i + " ");
                    System.out.println(n);
                    //打印当前歌曲
                    System.out.println(mouse);
                }else{
                     //n > 4
                    for(int i = 0; i < order.length; ++i){
                    //屏幕显示的是第一页(即显示第1 – 4首)时,光标在第一首歌曲上,
                    //用户按Up键后,屏幕要显示最后一页(即显示第7-10首歌),
                    //同时光标放到最后一首歌上。
                        if(first == 1 && mouse == 1 && order[i] == 'U'){
                            //最右一页的起始位置
                            first = n - 3;
                            mouse = n;
                        }
                        //同样的,屏幕显示最后一页时,光标在最后一首歌曲上,
                        //用户按Down键,屏幕要显示第一页,光标挪到第一首歌上。
                        else if(first == n - 3 && mouse == n && order[i] == 'D'){
                                first = 1;
                                mouse = 1;
                        }
                        //屏幕显示的不是第一页时,光标在当前屏幕显示的第一首歌曲时,用户按Up键后,
                        //屏幕从当前歌曲的上一首开始显示,光标也挪到上一首歌曲。
                        else if(first != 1 && mouse == first && order[i] == 'U'){
                                    --mouse;
                                    --first;
                        }
                        //屏幕显示的不是第一页时,光标在当前屏幕的最后一首歌时的
                        //按Down键,屏幕从当前歌曲的下一首开始显示,光标也挪到下一首歌曲
                        else if(first != n - 3 && mouse == first + 3 && order[i] == 'D'){
                                    first++;
                                    mouse++;
                        }
                        //其它情况,只移动光标
                        else if(order[i] == 'U')
                                --mouse;
                        else if(order[i] == 'D')
                                ++mouse;
                        }
                        //输出
                        //打印当前的显示列表
                        for(int i = first; i < first + 3; ++i)
                                System.out.print(i + " ");
                                System.out.println(first + 3);
                                //打印当前歌曲
                                System.out.println(mouse);
            }
     }
    public static void main(String[] args) throws Exception{
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String numStr;
            while((numStr = reader.readLine()) != null){
                String orderStr = reader.readLine();
                mouseMove(numStr, orderStr);
            }
    }
}

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

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

相关文章

免费搭建Plex家庭影音中心 - 打造超级多媒体中心【公网远程访问】

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频&#xff0c;已经算是生活中稀松平常的场景了&#xff0c;特别是各…

java+jsp企业物流货运快递管理系统servlet

功能需求具体描述&#xff1a; (1)用户功能模块包括用户登录注册&#xff0c;用户信息的修改&#xff0c;用户发布货物信息&#xff0c;给客服人员留言&#xff0c;对运输公司进行评价。 (2)企业功能模块包括企业注册登录&#xff0c;企业信息的修改&#xff0c;受理用户发布的…

c#笔记-代码格式

格式 为了让编译器能看懂。我们编写的源码必须符合一定的规范。 区分大小写 c#是大小写敏感语言。A1和a1是不同的东西。 不区分空白字符 c#对空白字符&#xff08;空格&#xff0c;制表符&#xff0c;换行&#xff09;不敏感。只要不截断单词&#xff0c;可以任意地使用空…

Java 基础进阶篇(二)—— 面向对象的三大特征之二:继承

文章目录 一、继承概述二、内存运行原理 ★三、继承的特点四、继承后&#xff1a;成员变量和方法的访问特点五、继承后&#xff1a;方法重写六、继承后&#xff1a;子类构造器的特点七、继承后&#xff1a;子类构造器访问父类有参构造器八、this、super 总结 一、继承概述 Jav…

TiDB实战篇-TiDB集群常用的监控指标

TiDB Server相关指标 Duration(延迟) 总体延迟 SQL不同的类型延迟 不同实例延迟 QPS&#xff08;每秒钟查询次数&#xff09; 总览 CPS&#xff08;一次请求多个sql,上面的QPS每一次就是一个记录&#xff09; 事务相关 延迟 影响性能的大事务 CPU 内存&#xff08;下图…

面试官:谈谈你对死锁的理解

1. 什么是死锁 比如上一次讲到 synchronized 的时候&#xff0c;一个线程&#xff0c;对同一个对象连续加锁两次&#xff0c;如果出现阻塞等待&#xff0c;代表这个锁是不可重入锁&#xff0c;这样的线程&#xff0c;也就称为死锁&#xff01; 一旦程序进入死锁了就会导致线程僵…

PromQL,让你轻松实现监控可视化!快来了解一下吧!

Prometheus 中的一些关键设计&#xff0c;比如注重标准和生态、监控目标动态发现机制、PromQL等。 PromQL 是 Prometheus 的查询语言&#xff0c;使用灵活方便&#xff0c;但很多人不知道如何更好利用它&#xff0c;发挥不出优势。 PromQL主要用于时序数据的查询和二次计算场…

【Docker】4、Docker 数据卷

目录 一、数据卷介绍二、数据卷相关命令三、创建一个数据卷&#xff0c;并查看数据卷在宿主机的目录位置四、数据卷挂载到容器五、数据卷挂载练习&#xff08;MySQL&#xff09;(1) 加载 MySQL 镜像(2) 根据镜像创建容器 一、数据卷介绍 &#x1f384; 数据卷&#xff08;volum…

Lychee图床 - 本地配置属于自己的相册管理系统并远程访问

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站&#xff0c;可以看做是云存储的一部分&#xff0c;既可…

HCIA-RS实验-路由配置-配置RIPv1 和RIPv2

书接上回。。。这篇主要以实验为主&#xff0c;实验的主要目标也是理解RIP路由协议的防环机制 &#xff0c;掌握RIPv1和v2的配置方法&#xff1b;大致拓扑图如下&#xff1a; 拓扑图&#xff1a; 配置对应的IP&#xff1a; R1.2.3 测试R1与R2间的连通性。 配置IP后测试连通性…

设计模式——设计模式简介和七大原则

导航&#xff1a; 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线设计模式牛客面试题 目录 一、通过经典面试题掌握重点 二、设计模式的目的和核心原则 三、设计模式七大原则 3.1 单一职责原则&#xff08;Single Respo…

Linux 安装 NFS 实现文件目录共享

一、背景介绍 项目中&#xff0c;之前是单节点部署服务&#xff0c;关于文件的上传和下载&#xff0c;只要配置好路径即可。 而当集群化部署后&#xff0c;就会有问题。比如&#xff1a;文件上传的时候&#xff0c;访问的是主机1&#xff0c;而想要现在文件的时候&#xff0c…

【MST】ABC235 E - MST + 1

一开始想的是分类讨论&#xff0c;看那条边加了之后成不成环&#xff0c;如果不成环且权值在前n-1&#xff0c;则一定在MST里&#xff0c;不在前n-1则不在MST里&#xff1b;如果成环了&#xff0c;如果权值不在前n-1&#xff0c;则不在MST里&#xff0c;如果权值在前n-1&#x…

spark 数据的加载和保存(Parquet、JSON、CSV、MySql)

spark数据的加载和保存 SparkSQL 默认读取和保存的文件格式为 parquet 1.加载数据 spark.read.load 是加载数据的通用方法 scala> spark.read. csv format jdbc json load option options orc parquet schema table text textFile 如果读取不同格式的数据&#xff0c;可以…

docker安装fastdfs

1 拉取镜像 docker pull morunchang/fastdfs如果网速下载慢&#xff0c;可以参考资料文件夹中给大家导出的镜像包上传到 Linux服务器上&#xff0c;通过docker load -i my_fdfs.tar 加载镜像。 使用 docker images查看是否成功 2 运行tracker docker run -d --name tracker -…

MySQL高阶——索引设计的推演

前言 MySQL在我们工作中都会用到&#xff0c;那么我们最常接触的就是增删改查&#xff0c;而对于增删改查来说&#xff0c;我们更多的是查询。但是面试中&#xff0c;面试官又不会问你什么查询是怎么写的&#xff0c;都是问一些索引啊&#xff0c;事务啊&#xff0c; 底层结构…

C. Multiplicity(DP + 分解因数)

Problem - C - Codeforces 给定一个整数数组a1&#xff0c;a2&#xff0c;...&#xff0c;an。 如果可以从a中删除一些元素得到b&#xff0c;则称数组b为a的子序列。 当且仅当对于每个i&#xff08;1≤i≤k&#xff09;&#xff0c;bi是i的倍数时&#xff0c;数组b1&#xff…

Spring Data JPA 快速上手

一、JPA的概述 JPA的全称是Java Persisitence API&#xff0c;即JAVA持久化API&#xff0c;是sum公司退出的一套基于ORM的规范&#xff0c;内部是由一些列的接口和抽象类构成。JPA通过JDK5.0注解描述对象-关系表的映射关系&#xff0c;并将运行期的实体对象持久化到数据库中。…

Mysql 分库分表 Mycat

0 课程视频 https://www.bilibili.com/video/BV1Kr4y1i7ru?p163&spm_id_frompageDriver&vd_sourceff8b7f852278821525f11666b36f180a 1 单库问题 1.1 热点数据多 -> 缓冲区不足 ->内存不足 1.2 数据多 -> 磁盘不足 1.3 请求数据量多 -> 带宽不足 1…

C/C++的命名空间和调用函数的详细讲解

目录 空函数 调用函数 调用 执行流程 命名空间 在创建函数时&#xff0c;必须编写其定义。所有函数定义包括以下组成部分&#xff1a; 名称&#xff1a;每个函数都必须有一个名称。通常&#xff0c;适用于变量名称的规则同样也适用于函数名称。形参列表&#xff1a;调用函…