Java面向对象编程

2023-11-10

在双向循环链表中,在p指针所指的节点后插入一个指针q所指向的新节点,修改指针的操作是()

A. p->next=q;q->prior=p;p->next->prior=q;q->next=q;

B. p->next=q;p->next->prior=q;q->prior=p;q->next=p->next;

C. q->prior=p;q->next=p->next;p->next->prior=q;p->next=q;

D. q->next=p->next;q->prior=;p->next=q;p->next=q;

答案:C

对于序列16 14 10 8 7 9 3 2 4 1,以下说法正确的是()

A. 大顶堆

B. 小顶堆

C. 不是堆

D. 二叉排序树

答案:A

对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若使用H(K)=K%9作为散列函数,则散列地址为1的元素有()个

A. 1

B. 2

C. 3

D. 4

答案:D

采用递归方式对顺序表进行快速排序,下列关于递归次数的叙述中,正确的是()

A. 递归次数与初始数据的排列次序无关

B. 每次划分后,先处理较长的分区可以减少递归次数

C. 每次划分后,先处理较短的分区可以减少递归次数

D. 递归次数与每次划分后得到的分区处理顺序无关

答案:D

一棵完全二叉树第六层有9个叶结点(根为第一层),则结点个数最多有()

A. 112

B. 111

C. 107

D. 109

答案:D

对数组A[]={4,78,3,64,32,89,43,12}进行Hash存储时,选用H(K)=K%7作为Hash函数,则Hash地址为1的元素有()个

A. 1

B. 2

C. 3

D. 4

答案:C

已知关键字序列5,8,12,19,28,20,15,22是最小堆,插入关键字3,调整后得到的最小堆是() A. 3,8,12,5,20,15,22,28,19

B. 3,5,12,19,20,15,22,8,28

C. 3,12,5,8,28,20,15,22,19

D. 3,5,12,8,28,20,15,22,19

答案:D

已知一个线性表(38,25,74,63,52,48),假定采用散列函数h(key) = key%7 计算散列地址,并散列存储在散列表A[0....6]中,若采用线性探测方法解决冲突,则 在该散列表上进行等概率成功查找的平均查找长度为()

A. 1.5

B. 1.7

C. 2.0

D. 2.3

答案:C

以30为基准,设一组初始记录关键字序列为 (30,15,40,28,50,10,70),则第一趟快速排序结果为()

A. 10,28,15,30,50,40,70

B. 10,15,28,30,50,40,70

C. 10,28,15,30,40,50,7

0 D. 10,15,28,30,40,50,70

答案:B

一棵二叉树的先序遍历为EFHIGJK,中序遍历为HFIEJKG,则后序遍历为( )

A. HIFJKGE

B. FHIJKGE

C. HIFGJKE

D. HIFKJGE

答案:D

微信红包
题目描述:春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。 写出具体算法思路和代码实现,要求算法尽可能高效。
 给定一个红包的金额数组 gifts 及它的大小 n ,请返回所求红包的金额。 若没有金额超过总数的一半,返回0。 
数据范围:1<=n<=1000,红包金额满足1<=gift<=100000
 
 
方法1

public class Gift {

    public int getValue(int[] gifts,int n){

        //数组排序

        Arrays.sort(gifts);

        //获取中间数据

        int mid=gifts[n/2];

        int count=0;

        //统计中间位置的数据出现的次数

        for (int g : gifts) {

            if (g==mid){

                count++;

            }

        }

        //判断计算器值 > n/2

        if (count >n/2){

            return mid;

        }else {

            return 0;

        }

    }

}
方法2

public class Gift {

    //方法2

    public int getValue(int[] gifts,int n){

        Map<Integer,Integer> map=new HashMap<>();

        for ( int g : gifts) {

            if (map.containsKey(g)){

                map.put(g,map.get(g)+1);

            }else {

                map.put(g,1);

            }

            if (map.get(g) >n/2){

                return g;

            }

        }

        return 0;

    }

}
计算字符串的编辑距离
题目描述:Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字 符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学家 Levenshtein 提出的,故又叫 Levenshtein Distance 。
 例如: 字符串A: abcdefg 字符串B: abcdef 
通过增加或是删掉字符 ”g” 的方式达到目的。这两种方案都需要一次操作。把这个操作所需要的次数定义为两个字符串的距离。 
要求: 给定任意两个字符串,写出一个算法计算它们的编辑距离。 
数据范围:给定的字符串长度满足1<=len(str)<=1000
输入描述:每组用例一共2行,为输入的两个字符串
输出描述:每组用例输出一行,代表字符串的距离

 

public class Main38 {

    //计算字符串的编辑距离

    public static void main(String[] args)throws Exception {

        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));

        String str1;

        while ((str1=reader.readLine()) !=null){

            String str2=reader.readLine();

            System.out.println(getDistance(str1,str2));

        }

    }

    public static int getDistance(String str1,String str2){

        char[] wd1=str1.toCharArray();

        char[] wd2=str2.toCharArray();

        int len1=wd1.length;

        int len2=wd2.length;



        //定义一个矩阵

        int[][] dist=new int[len1+1][len2+1];

        //初始状态 F(i,0)=i;  F(0,j)=j

        for (int i = 0; i <=len1; ++i) {

            dist[i][0]=i;

        }



        for (int i = 0; i <=len2; ++i) {

            dist[0][i]=i;

        }



        for (int i = 1; i <=len1; ++i) {

            for (int j = 1; j <=len2; ++j) {

                //F(i,j) =min(F(i-1,j)+1

                //F(i,j-1)+1,F(i-1,j-1)+(wd1[i]==wd2[j] ? 0:1))

                //首先求出插入和删除的最小值

                dist[i][j]= Math.min(dist[i-1][j],dist[i][j-1])+1;

                //再和替换进行比较

                if (wd1[i-1]==wd2[j-1]){

                    //不需要进行替换

                    dist[i][j]=Math.min(dist[i][j],dist[i-1][j-1]);

                }else {

                    dist[i][j]=Math.min(dist[i][j],dist[i-1][j-1]+1);

                }

            }

        }

        return dist[len1][len2];

    }



}
 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java面向对象编程 的相关文章

随机推荐

  • 2022 华为杯数模研赛E题原创python代码

    每小问都会有对应的代码 并给出部分处理后的数据 可视化图等 已更新好前三问 注 目前市面上的资料都已经看过了 小p的那个Python代码 个人认为过分想要出的速度快 实际质量不太好 直接参考很难获奖 全程无脑机器学习 这种代码我可以写一筐
  • 成员模板函数

    Member Function Templates 11 04 2016 2 minutes to read Contributors all The term member template refers to both member f
  • 在 K8S 中快速部署 Redis Cluster & Redisinsight

    Redis Cluster 部署 使用 Bitnami helm chart 在 K8S redis 命名空间中一键部署 Redis cluster helm repo add bitnami https charts bitnami co
  • RS-485详解(一)

    RS 485是美国电子工业协会 EIA 在1983年批准了一个新的平衡传输标准 balanced transmission standard EIA一开始将RS Recommended Standard 做为标准的前缀 不过后来为了便于识别
  • sqli--labs 进阶篇 23_24关

    第二十三关 基于单引号的过滤字符注入 直接爆点 测试是否报错 从下面的提示信息 可以知道是单引号 id 代码审计 进一步确定自己的推论 源码中 存在过滤掉一些注释语句 id 1 推测结构 参数XX limit 0 1 利用回显确定下自己的推
  • 【Linux 速查手册】基于CentOS的Linux 文件结构以及在搭建LAMP环境

    文章目录 LAMP Linux 主要文件结构 Apache 作为 Web 服务器的文件结构 在Centos 中 home目录和 目录的区别 写在最后 LAMP LAMP是指使用 Linux Apache MySql PHP 搭建而成的网站
  • 2018最有前景的编程语言, 你选对了吗?

    对于程序员来说 世间最可怕的事情 莫过于 刚刚学过的编程语言就已经过时 对于求职者来说 了解受欢迎的编程语言及趋势 无论是对找工作 还是规划将来的职业发展 都有很大的好处 基于各种可信来源的数据统计 我对2018年初IT行业编程语言的状态
  • Debian 10驱动Broadcom 无线网卡

    用lspci命令查询无线网卡品牌 运行下面代码后 重启即可 apt get install linux image uname r sed s linux headers uname r sed s broadcom sta dkms
  • QT处理日志文件

    由于实际生产需要 软件系统的运行 会产生大量的日志文件 有时候一天就能产生超过百万条log记录 那么为了能够处理日志文件 查询并且找到我们想要的报错信息 因此不得不考虑怎么实现 打开大日志文件的可行方法 在这里我采用的是内存映射的方式去读取
  • 深入理解神经网络:使用Python实现简单的前馈神经网络

    在本文中 我们将深入理解前馈神经网络的原理 并使用Python编程实现一个简单的前馈神经网络 我们将使用NumPy库来处理矩阵运算 并将逐步解释神经网络的各个组成部分 包括神经元 激活函数 前向传播 反向传播和梯度下降 最后 我们将以一个简
  • k8s-基础入门

    目录 一 k8s的特性 二 kubernetes的基本组件 1 Pod 最小的资源单位 1 1 Pod的两个分类 2 资源清单 3 Pod 控制器 维护Pod状态 期望值 4 服务发现 Service同一个访问入口 5 存储服务分类 6 调
  • linux rpm软件包管理,linux之rpm软件包管理

    1 RPM包的命名规则 例如 httpd 2 2 15 15 el6 centos 1 i686 rpm httpd 软件包名 2 2 15 软件版本 15 发行次数 e16 centos 适合的linux平台 i686 适合的硬件平台 r
  • Angular之ngModel报错:angular-can‘t-bind-to-‘ngModel‘---

    做双向绑定时 如果遇见Angular Can t bind to ngModel since it isn t a known property of input 问题 这是由于没有在当前组件所属的Module中引用FormModule 注
  • 操作系统-进程概念与进程控制块

    进程 在学习操作系统时 对于进程我们经常能看到如下几个定义 一个正在执行的程序 一个正在计算机上执行的程序实例 能分配给处理器并由处理器执行的实体 由一组执行的指令 一个当前状态和一组相关的系统资源表征的活动单元 以上定义都是很抽象的 将进
  • Papers with Code一个查找论文和对应代码的神器

    0x01 Papers with Code是什么 Papers with Code 是一个包含机器学习论文及其代码实现的网站 大多数论文都是有GitHub代码的 这个网站很牛逼的地方就是对机器学习方向做了任务分类 检索对应的论文 数据 代码
  • Shell 编程:探索 Shell 的基本概念与用法

    目录 Shell 简介 Shell 脚本 Shell 脚本运行 Shell 变量 1 创建变量和赋值 2 引用变量 3 修改变量的值 4 只读变量 5 删除变量 6 环境变量 Shell 字符串操作 1 拼接字符串 2 字符串长度 3 字符
  • 实现antd中Form、Form.Item组件

    实现antd中Form Form Item组件 初始化项目 使用create react app初始化项目后创建MyRcFieldForm文件 代码如下 import React Component useEffect from react
  • SWOT分析模型

    SWOT分析模型 出自 MBA智库百科 http wiki mbalib com SWOT分析模型 SWOT Analysis SWOT分析法 也称TOWS分析法 道斯矩阵 即态势分析法 20世纪80年代初由美国旧金山大学的管理学教授韦里克
  • Flask+Nginx+Gunicorn部署应用实现

    实际的开发中 不能使用flask搭建的轻型服务器 无法满足性能要求 在生产环境中可以使用Gunicorn做容器 部署flask程序 Gunicorn 是Python WSGI HTTP 服务器 兼容各种web框架不需要配置 安装后直接使用命
  • Java面向对象编程

    在双向循环链表中 在p指针所指的节点后插入一个指针q所指向的新节点 修改指针的操作是 A p gt next q q gt prior p p gt next gt prior q q gt next q B p gt next q p g