当前位置: 首页 > article >正文

【Java笔试强训 22】

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

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


目录

一、选择题

二、编程题

   🔥小易的升级之路

   🔥出字符串中第一个只出现一次的字符



一、选择题

1、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
A 顺序表
B 双链表
C 带头结点的双循环链表
D 单循环链表
正确答案: A
参考答案:
数组取、尾插、尾删元素O(1)
2、下列数据结构具有记忆功能的是?
A 队列
B 循环队列
C 栈
D 顺序表
正确答案: C
3、循环两列放在一维数组A[0…M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。初始时为空,下列判断队空和队满的条件中,正确的是 ()
A 队空:end1end2; 队满:end1(end2+1)modM
B 队空:end1end2; 队满:end2(end1+1)mod(M-1)
C 队空:end2==(end1+1)modM ; 队满:end1==(end2+1)modM
D 队空:end1==(end2+1)modM; 队满:end2==(end1+1)mod(M-1)
正确答案: A
参考答案:
数组长度就是M长度
对于循环队列来讲,要浪费一个空间用来判断队列是否已满
a.能存储的元素个数为M-1
b.最终判断是否已满mod M
队列是否为空
end1 == end2 为空
end1 == (end2 + 1) mod M
4、对递归程序的优化的一般的手段为()
A 尾递归优化
B 循环优化
C 堆栈优化
D 停止值优化
正确答案: A
参考答案:
比如我们的快速排序和归并排序,在递归的终止条件 I是区间最左侧,r是区间最右侧// 终止条件(I >= r){ return;}

// 在递归终止条件处进行优化
// 当区间个数较小时,采用插入排序来优化(r -l<= 15) => 采用插入排序
5、将一颗有 100 个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根节点编号为 1 ,则编号为 98 的节点的父节点编号为()
A 47
B 48
C 49
D 50
正确答案:C
参考答案:
根节点从1开始编号 根节点从0开始编号,在从1编号的基
设父节点编号为x 础上增加1个偏移量即可
left = 2x left = 2x + 1
right=2x + 1 right=2x+2 d
设现在孩子结点编号为n
父节点编号就是x/2 父节点(x-1)/2
6、将一棵二叉树的根结点放入队列,然后递归的执行如下操作,将出队结点所有子结点加入队。以上操作可以实现哪种遍历?
A 前序遍历
B 中序遍历
C 后序遍历
D 层序遍历
正确答案:D
参考答案:
用到队列的遍历为层序遍历,前中后遍历借助的是栈
7、有 1000 个无序的整数,希望使用最快的方式找出前 50 个最大的,最佳的选择是( )
A 冒泡排序
B 基数排序
C 堆排序
D 快速排序
正确答案: C
参考答案:
topk问题,在一组数据中找到k大个元素是利用堆或者优先级队列
8、以下数据结构说法,错误的是___?
A 红黑树插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(logn)
B B+树插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(logn)
C Hash表插入操作的平均时间复杂度为O(logn),最坏时间复杂度为O(n)
D 排序链表插入操作的平均时间复杂度为O(n),最坏时间复杂度为O(n)
正确答案: C

 9、将两个各有n个元素的有序表归并成一个有序表,最少的比较次数是()
A 2n
B 2n-1
C n-1
D n
正确答案: D
参考答案:
两个有序的子区间个数都为n,最好的情况为第二个区间都比第一个区间大,只需要比较n次即可
10、下列排序法中,每经过一次元素的交换会产生新的逆序的是( )
A 快速排序
B 冒泡排序
C 简单插入排序
D 简单选择排序
正确答案: A
参考答案:
在数据元素的序列中,对于某个元素,如果其后存在一个元素小于它,则称之为存在一个逆序。冒泡排序只交换相邻元素,但不是每次移动都产生新的逆序。简单插入排序每一次比较后最多移掉一个逆序。快速排序每一次交换移动都会产生新的逆序,因为当不会有新的逆序产生时,本轮比较结束。简单选择排序的基本思想是先从所有 n 个待排序的数据元素中选择最小的元素,将该元素与第一个元素交换,再从剩下的 n-1 个元素中选出最小的元素与第 2 个元素交换,这样做不会产生逆序。故本题答案为 A 选项。


二、编程题

   🔥小易的升级之路

  小易的升级之路_牛客题霸_牛客网

 【解题思路】:
本题的能力值的累加分两种情况,一种是直接相加bi,一种是累加当前能力值于bi的最大公约数。最大公约数可以通过碾转相除法求得:a与b的最大公约数相当于b与a,b余数的最大公约数。如果求余结果为0, 则b为所求结果

import java.util.*;
import java.io.*;
public class Main {
    public static int func(int a,int b){
        int c=0;
        while((c=a%b)!=0){
            a=b;
            b=c;
        }
        return b;
    }
    public static void main(String[] args) throws Exception{
        //循环读入
        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        String s;
        while((s=reader.readLine())!=null){
            String[] arr=s.split(" ");
            int num = Integer.parseInt(arr[0]);
            int c = Integer.parseInt(arr[1]);
            //读入boss的防御值
            for(int i=0;i<num;i++){
                int power=Integer.parseInt(reader.readLine());
                if(c>=power){
                    c+=power;
                }else{
                    c+=func(c,power);
                }
            }
             System.out.println(c);
        }
    }
}

🔥出字符串中第一个只出现一次的字符

找出字符串中第一个只出现一次的字符_牛客题霸_牛客网

 【解题思路】:
用一个数组的每一个位置表示对应的位置。对应的字符位置存放字符出现的次数。统计完之后,遍历输入字符,遇到第一个只出现一次的字符就停止

import java.util.*;
import java.io.*;
public class Main {
    public static void findFirst(String str){
        char[] arr=str.toCharArray();
        int[] count=new int[128];
        for(int i=0;i<arr.length;i++){
            count[arr[i]]++;
        }
        boolean flag=false;
        for(int i=0;i<arr.length;i++){
            if(count[arr[i]]==1){
                System.out.println(arr[i]);
                flag=true;
                break;
            }
        }
            if(!flag){
                System.out.println(-1); 
            }
        
    } 
    public static void main(String[] args) throws Exception{
        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        String s;
        while((s=reader.readLine())!=null){
            findFirst(s);
        }
    }
}


http://www.kler.cn/news/16677.html

相关文章:

  • 后端要一次性返回我10万条数据
  • Linux内核面试知识总结
  • 网络计算模式复习(二)
  • 机器学习:基于朴素贝叶斯(Naive Bayes)的分类预测
  • 认识JSP
  • Vue3 : 实现Vue的跨端渲染
  • 爬虫(requsets)笔记
  • Contest3047 - 计科2101~2104算法设计与分析上机作业04
  • JavaScript 笔记
  • 如何安装Auto-GPT
  • Java+springboot开发的医院HIS信息管理系统实现,系统部署于云端,支持多租户SaaS模式
  • RK3588 lt16911uxc hdmi in
  • 【郭东白架构课 模块二:创造价值】22|节点三:什么样的风险才算是重大风险?
  • 《花雕学AI》解锁ChatGPT潜力!183个最佳提示语,助您充分利用人工智能技术
  • 数据埋点1
  • 设计模式:创建型设计模式、结构型设计模式
  • 香港服务器租用攻略:如何优化用户体验?
  • 基于海鸥算法的极限学习机(ELM)回归预测-附代码
  • Jenkins + Gitlab 实现项目自动化构建及部署
  • 你真的会跟 ChatGPT 聊天吗?(上)
  • 业务维度digest日志的记录与监控方案
  • 零入门kubernetes网络实战-30->基于bridge+veth pair+DNAT技术来实现外网可以访问内网的方案
  • Nginx—在linux的ubuntu系统上的安装使用
  • 协同过滤算法深入解析:构建智能推荐系统的核心技术
  • Leetcode力扣秋招刷题路-0902
  • 一招解决ChatGPT对话经常中断问题:KeepChatGPT插件
  • Window 10 环境下用 OpenVINO 2022.3部署yolov5 7.0
  • 爬虫大全:从零开始学习爬虫的基础知识
  • 【每日一题】
  • ubuntu 安装 notepad++,显示中文菜单,并解决中文乱码问题