【强训】Day03

news2024/12/28 20:11:29

努力经营当下,直至未来明朗!

文章目录

  • 一、选择
  • 二、编程
    • 1. 字符串中找出连续最长的数字串
    • 2. 数组中出现次数超过一半的数字
  • 答案
    • 1. 选择
    • 2. 编程


普通小孩也要热爱生活!

一、选择

  1. 以下代码运行输出的是()
public class Person{
	private String name = "Person";
	int age=0;
}
public class Child extends Person{
	public String grade;
	public static void main(String[] args){
		Person p = new Child();
		System.out.println(p.name);
	}
}

A 输出:Person
B 没有输出
C 编译出错
D 运行出错

  1. 以下程序的输出结果为()
class Base{
    public Base(String s){
        System.out.print("B");
    }
}
public class Derived extends Base{
    public Derived (String s) {
        System.out.print("D");
    }
    public static void main(String[] args){
        new Derived("C");
    }
}

A BD
B DB
C C
D 编译错误

  1. 在异常处理中,以下描述不正确的有()

A try块不可以省略
B 可以使用多重catch块
C finally块可以省略
D catch块和finally块可以同时省略

  1. 下列哪种说法是正确的?

A 实例方法可直接调用超类的实例方法
B 实例方法可直接调用超类的类方法
C 实例方法可直接调用本类的类方法
D 实例方法可直接调用其他类的实例方法

  1. 程序读入用户输入的一个值,要求创建一个自定义的异常,如果输入值大于 10 ,使用 throw 语句显式地引发异常,异常输出信息为 “something’s wrong!” ,语句为()

A if(i>10)throw new Exception(“something’swrong!”);
B if(i>10)throw Exception e(“something’swrong!”);
C if(i>10) throw new Exception e(“something’swrong!”); > D if(i>10)throw Exception(“something’swrong!”);

  1. 以下关于集合类 ArrayList 、 LinkedList 、 HashMap 描述错误的是()

A HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值
B ArrayList和LinkedList均实现了List接口
C 添加和删除元素时,ArrayList的表现更佳
D ArrayList的访问速度比LinkedList快

  1. Java程序中的类名称必须与存放该类的文件名相同。()

A 对
B错


二、编程

1. 字符串中找出连续最长的数字串

字符串中找出连续最长的字符串

读入一个字符串str,输出字符串str中的连续最长的数字串。


2. 数组中出现次数超过一半的数字

数组中出现次数超过一半的数字

给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。

数据范围:n<=50000 ,数组中元素的值: 0<=val<=10000,
要求:空间复杂度:O(1) ,时间复杂度:O(N)。


答案

1. 选择

  1. ① Java中对字段属性是静态绑定,方法成员是动态绑定。
    ② 这里错在:在子类中试图访问父类的private字段,所以编译不通过,将private去掉就可访问。不是动态绑定的问题,它本来就属于静态绑定。

故:选C

  1. 子类构造方法在调用时必须先调用父类的,由于父类没有无参构造,必须在子类中显式调用。(无参构造方法会隐式调用)

故:选D

拓展:
修改:
① 要么在子类构造方法中显式调用父类构造方法
0
此时输出BD

② 要么在父类中增加无参构造方法(此时会隐式调用无参构造方法super()):
1
此时输出:D
【但是如果子类构造方法中显式调用super(s),则输出:BD】

  1. ① try语句不可以省略。
    ② finally和catch不可以同时省略。
    ③ 可以有多重catch。
    ④ try语句后面必须要有一个别的语句跟在后面。有如下三种:
try-catch
try-finally
try-catch-finally
  1. 该题考察的是继承的特性和实例方法、类方法的区别
    当类的字节码文件加载到内存中时,类的实例方法并没有被分配入口地址只有当该类的对象创建以后,实例方法才分配了入口地址
    当类的字节码文件加载到内存,类方法的入口地址就会分配完成,所以类方法不仅可以被该类的对象调用,也可以直接通过类名完成调用。类方法的入口地址只有程序退出时消失

① 对于A,实例方法不可以调用超类的私有(private)实例方法。
② 对于B,实例方法不可以调用超类的私有(private)类方法。
③ 对于D,同选项A一样的原因。
④ 对于C,本类的类方法优先于实例方法地址的分配,所以实例方法可以调用优先加载的类方法。

故:选C

  1. ... throw new Exception("...");
    自定义异常可参考:异常

故:选A

  1. ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。
    ② 对于随机访问ArrayList要优于LinkedList,ArrayList可以根据下标以O(1)时间复杂度对元素进行随机访问,而LinkedList的每一个元素都依靠地址指针和它后一个元素连接在一起,查找某个元素的时间复杂度是O(N)。
    ③ 对于插入和删除操作,LinkedList要优于ArrayList,因为当元素被添加到LinkedList任意位置的时候,不需要像ArrayList那样重新计算大小或者是更新索引。
    ④ TreeMap和TreeSet的key都不可以为null(因为根据key来排序),但是HashMap中的key、value都可以为null(HashSet中key可以null)。【Set中只存储key】
    参考:Map和Set、ArrayList

故:选C

  1. 考虑一个程序中有很多类,只有public修饰的类的类名才与源文件名相同。

故:选B

  1. Java是强类型语言,JavaScript是弱类型语言。
    参考:Java和JavaScript

2. 编程

  1. 字符串中找出连续最长的数字串
    1)思路:
    记录 -> 比较 -> 更新

① 遍历字符串,使用cur去记录连续的数字串,如果遇到不是数字字符,则表示一个连续的数字串结束了;
② 则将数字串跟之前的数字串比较,如果更长,则更新更长的数字串更新到ret

2)注意点:

① 字符串的拼接 +"";
② 每次统计完一次后要对cur清空,以便下一次统计
③ 要对特殊情况进行单独处理(最后一位还是数字!)

3)代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // str是输入的字符串
        String str = in.nextLine();
        // cur是统计当前最长的字符串
        String cur = "";
        // ret是更新最长的字符串(要存储最终结果)
        String ret = "";
        // 不用单独声明一个统计长度的变量,.length()直接可以统计

        // 遍历字符串
        int i = 0;
        for (; i < str.length(); i++) {
            char ch = str.charAt(i);
            if(ch>='0' && ch<='9') {
                // String是进行字符串的拼接+,注意拼接方式
                cur = cur + ch + "";
            } else  {
                // 说明不是数字,结束本次cur的拼接
                // 并进行判断
                if(cur.length() > ret.length()) {
                    // 更长就更新
                    ret = cur;
                }
                // 不管是长or不长,此时一轮拼接结束,
                // 都要对cur进行清空,让下次来使用
                cur = "";
            }
        }
        // 此时 走到最后
        // 但是可能最后还是数字,但是此时还没来得及比较更新
        // 单独处理
        //处理123abc123456这种情况
        if(i==str.length() && cur.length()>ret.length()) {
            // 更新
            ret = cur;
        }

        System.out.println(ret);
    }
}

  1. 数组中出现次数超过一半的数字
    1)思路:

① 使用HashMap 或者 数组 统计出现次数
② 排序算法:如果存在,则中间的数字就符合条件。(排完序找到之后统计该数字出现的次数是否满足条件)
③ 相消法,借助次数【推荐

2)代码
排序算法
涉及到快排,时间复杂度为O(N*logN),并非最优。

import java.util.Arrays;

public class Solution {
    public int MoreThanHalfNum_Solution(int [] array) {
        // 判空
        if(array == null || array.length == 0) {
            return 0;
        }
        // 计算数组长度以及半长
        int len = array.length;
        int half = len / 2;

        // 进行升序排列
        // 涉及到快排sort,其时间复杂度为O(NlogN
        Arrays.sort(array);

        // 找中间的数字
        // half直接就是超过一半的数组下标
        int midNum = array[half];

        // 遍历统计出现次数是否满足题意
        int count = 0;
        for (int i = 0; i < len; i++) {
            if(array[i] == midNum) {
                count++;
            }
        }
        if(count > half) {
            return midNum;
        }
        return 0;
    }
}

相消法
时间复杂度: O(N)

public class Solution {
    public int MoreThanHalfNum_Solution(int [] array) {
        // 首先判空
        if(array==null || array.length==0) {
            return 0;
        }

        int len = array.length;
        int half = len/2;

        // 进行遍历相消【借助次数】
        int ret = array[0];
        int times = 1;  // 统计次数

        for (int i = 1; i < len; i++) {  // 从1开始:times=1
            // 如果times==0,从新给ret赋值,更新times
            if(times == 0) {
                ret = array[i];
                times++;
            } else if(ret == array[i]) {
                // 相等 times++
                times++;
            } else {
                // 不相等 times--
                times--;
            }
        }

        // 为了以防万一,再次进行统计次数
        times = 0;
        for (int i = 0; i < len; i++) {
            if(ret == array[i]) {
                times++;
            }
        }

        // 返回
        return (times>half)? ret:0;
    }
}

① HashMap方法参考:
参考第4题

yy

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

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

相关文章

都2023了,为什么选择Nacos,这篇文章让你入门Nacos

&#x1f473;我亲爱的各位大佬们好&#x1f618;&#x1f618;&#x1f618; ♨️本篇文章记录的为 Nacos入门 相关内容&#xff0c;适合在学Java的小白,帮助新手快速上手,也适合复习中&#xff0c;面试中的大佬&#x1f649;&#x1f649;&#x1f649;。 ♨️如果文章有什么…

传奇开服一条龙GEE引擎登录器配置教程

1、首先我们打开我们版本文件夹找到登录器文件夹进入找到GEE登录器配置器&#xff08;MakeGameLogin.exe&#xff09;打开2、接下来开始填写我们的主列表和备列表&#xff0c;这时候我们要自己创建一个列表&#xff0c;因为登录器自带的列表肯定是读取不了的&#xff0c;我们在…

Speckle核心概念【3D数据引擎】

本节将详细介绍你的3D数据如何发送到 Speckle 并存储在 Speckle 中。 无论你是 Speckle 的新手还是只是需要复习&#xff0c;这都是一个很好的起点&#xff01; 1、关于Speckle术语 我们尽量使本指南简单明了&#xff0c;删除了技术语言&#xff0c;除非绝对必要。 值得注意的…

页面表格中每行前添加复选框,点击复选框导出本行数据(掉后端接口)

需求如下&#xff1a;html表格中&#xff0c;每行前面添加一个复选框&#xff0c;单机复选框下载/到处本行数据 思路&#xff1a; 页面&#xff1a; 页面首先要添加复选框&#xff0c;然后点击复选框&#xff0c;调用导出方法 同时获取到与它对应的数据库唯一id信息&#xf…

Seata 1.6.0 正式发布,大幅度提升存储性能

作者&#xff1a;Seata 社区 用户登记* * 欢迎已使用用户在此链接登记&#xff0c;便于我们更好的针对业务场景优化&#xff1a; https://github.com/seata/seata/issues/1246 发布概览* * 主要新增特性&#xff1a;支持 oracle 和 pgsql 多主键&#xff1b;支持 seata-ser…

芯片+步进电机档位控制实验

1、系统功能 目的&#xff1a;学习步进电机的控制。 使用设备&#xff1a;步进电机、两位共阴数码管、按键 功能&#xff1a;驱动步进电机以不同转速&#xff08;4档&#xff09;转动&#xff0c;并将当前档位用数码管显示 (1)按键 KEY1 作为启动和停止的切换按键&#xff1b;…

【Git】Git概述与安装

1、Git 概述 Git 是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小型到大型的各种项目。 Git 易于学习&#xff0c;占地面积小&#xff0c;性能极快。 它具有廉价的本地库&#xff0c;方便的暂存区域和多个工作流分支等特性。其性能优于 Subversio…

SwitchResX for Mac 屏幕分辨率修改工具

前言 SwitchResX V4.12.1 是Mac上一款功能强大的屏幕分辨率修改软件&#xff0c;可以为您提供控制显示器分辨率所需的所有工具。在switchresx帮助下&#xff0c;您可以管理无论是Mac Retina显示器&#xff0c;Cinema Displays还是电视机甚至投影仪的任何分辨率。而且switchres…

C语言-三子棋

文章目录三子棋一、问题描述二、基本流程在写三子棋的代码之前&#xff0c;我们来看看实现这个游戏的逻辑&#xff1a;三、步骤1. 菜单界面2. 创建棋盘3. 棋盘初始化4.打印棋盘(1)简陋棋盘&#xff1a;(2)自己打印棋盘&#xff1a;5.玩家落子6.电脑落子7.判断胜负1) 判定是否和…

CAPL学习之路-测试功能集函数(最终篇,其他的一些函数介绍)

TestSetEcuOffline 断开ECU与总线的连接 这个ecu是仿真ecu,不是真实ecu哦! testcase TCExample() {testSetEcuOffline(Engine); }void MainTest () {TCExample(); }Trace窗口: TestSetEcuOnline 将ECU连接到总线 testGetCurrentCycle 返回测试的当前周期 这里不管怎么试都返…

【目标检测】TOOD:Task-aligned One-stage Object Detection

TOOD:Task-aligned One-stage Object Detection 论文题目&#xff1a;《TOOD:Task-aligned One-stage Object Detection》——任务对齐的单阶段目标检测 论文地址&#xff1a; https://arxiv.org/abs/2108.07755 论文代码&#xff1a; https://github.com/fcjian/TOOD 1、前言…

优秀的 Verilog/FPGA开源项目介绍(三十六)-RISC-V(新增一)

关于RISC-V的二三事risc-v官网❝https://riscv.org/RISC-V&#xff08;跟我读&#xff1a;“risk----------------five”&#xff09;是一个基于精简指令集&#xff08;RISC&#xff09;原则的开源指令集架构&#xff08;ISA&#xff09;。这里要明确两个概念&#xff1a;指令集…

基于VC++的3D地形绘制与纹理贴图

前言随着地理信息系统产业的发展&#xff0c;三维产品也在生活中处处吸引着我们的眼球。作为数字城市的核心内容&#xff0c;城市模型的构建成为了目前研究的热点。OpenGL是独立于操作系统和硬件环境的三维图形库&#xff0c;其为实现逼真的三维绘制效果和建立交互的三维场景提…

ES6 课程概述④

文章目录6-1. 对象解构什么是解构在解构中使用默认值非同名属性解构7-2. 共享符号7-3. 知名&#xff08;公共、具名&#xff09;符号[回顾]事件循环8-1. 事件和回调函数的缺陷8-2. 异步处理的通用模型8-3. Promise 的基本使用8-4. Promise 的串联8-5. Promise 的其他 api原型成…

通关手册 | 祝我通关成功!!!

Framework of MLLoss on training data1. large1.1 Model Bias1.2 Optimization2. smallLoss on testing data2.1 large2.1.1 overfitting2.1.2 mismatch2.2 small通关手册&#xff1a;祝我通关成功&#xff01;&#xff01;&#xff01; Loss on training data 1. large 1.1…

Vue--》Vue3生命周期以及其它组合API的讲解

目录 生命周期 自定义hook函数 toRef shallowReactive与shallowRef readonly与shallReadonly toRaw与markRaw 生命周期 Vue3.0中可以继续使用Vue2.x中的生命周期钩子&#xff0c;但是有两个被更名&#xff1a;Vue2中的beforeDestroy改名为&#xff1a;beforeUnmount&…

【数字孪生百科】可视化图表知识科普——Pareto图(Pareto Chart)

简介Pareto图&#xff08;Pareto Chart&#xff09;又称帕累托图、排列图&#xff0c;是一种特殊类型的条形图。图中标绘的值是按照事件发生的频率排序而成&#xff0c;显示由于各种原因引起的缺陷数量或不一致的排列顺序。Pareto图是根据 Vilfredo Pareto 命名的&#xff0c;他…

Go语言设计与实现 --Goroutine

Goroutine是GMP模型中的G&#xff0c;是属于用户态的线程&#xff0c;由Go runtime管理&#xff0c;而不是操作系统管理。 数据结构 type g struct {goid int64 // 唯一的goroutine的IDsched gobuf // goroutine切换时&#xff0c;用于保存g的上下文stack stack // 栈gopc…

Android Studio调用so库中方法

一、JNI规范so库调用 在 Android Studio生成自己的so库 中已经创建了自己的so库&#xff0c;这是一个JNI规范的so库&#xff0c;可以直接将so库放到libs中&#xff0c;并按照上面文章中MainActivity中的调用方法使用。 1、build.gradle&#xff08;app&#xff09;配置 andro…

SHELL脚本学习 --- 第六次作业(正则和sed)

SHELL脚本学习 — 第六次作业 思路&#xff1a; 作业1&#xff1a; 1&#xff0c;正则匹配h或H即可 2&#xff0c;sh$匹配以sh结尾 3&#xff0c;使用[[:space:]]匹配空格&#xff0c;[^[:space:]]匹配非空格 4&#xff0c;^to开头&#xff0c;中间.匹配任意字符0次或多次&…