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

数据结构与算法面试系列-03

1. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

程序代码

package com.jingxuan.system;public class Sphere {public static void main(String[] args) {double s = 0;double t = 100;for (int i = 1; i <= 10; i++) {s += t;t = t / 2;}System.out.println("第10次落地时,共经过" +s+ "米");System.out.println("第10次反弹" +t+ "米");}
}

执行结果

第10次落地时,共经过199.8046875米
第10次反弹0.09765625米

2. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

程序分析:分子与分母的变化规律,分母等于前一个分子,分子是前一个分子加当前分母之和。

程序代码如下:

package com.jingxuan.system;public class Fenshu20 {public static void main(String[] args) {float fm = 1f;float fz = 1f;float temp;float sum = 0f;for (int i = 0; i < 20; i++) {temp = fm;fm = fz;fz = fz + temp;sum += fz / fm;System.out.println(fz + "/" + fm);}System.out.println("这个数列的前20项之和为" + sum);}
}

运行结果如下:

2.0/1.0
3.0/2.0
5.0/3.0
8.0/5.0
13.0/8.0
21.0/13.0
34.0/21.0
55.0/34.0
89.0/55.0
144.0/89.0
233.0/144.0
377.0/233.0
610.0/377.0
987.0/610.0
1597.0/987.0
2584.0/1597.0
4181.0/2584.0
6765.0/4181.0
10946.0/6765.0
17711.0/10946.0
这个数列的前20项之和为32.660263

3. 描述一下什么是 B 树?

B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数。当m取2时,就是我们常见的二叉搜索树。

一颗m阶的B树定义如下:

1)每个结点最多有m-1个关键字。

2)根结点最少可以只有1个关键字。

3)非根结点至少有Math.ceil(m/2)-1个关键字。

4)每个结点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。

5)所有叶子结点都位于同一层,或者说根结点到每个叶子结点的长度都相同。

上图是一颗阶数为4的B树。在实际应用中的B树的阶数m都非常大(通常大于100),所以即使存储大量的数据,B树的高度仍然比较小。每个结点中存储了关键字(key)和关键字对应的数据(data),以及孩子结点的指针。我们将一个key和其对应的data称为一个记录。但为了方便描述,除非特别说明,后续文中就用key来代替(key, value)键值对这个整体。在数据库中我们将B树(和B+树)作为索引结构,可以加快查询速速,此时B树中的key就表示键,而data表示了这个键对应的条目在硬盘上的逻辑地址。 

4. Java 中如何将一个数组逆序输出?

程序分析:循环遍历从后往前取数组长度减1作为数的索引值,然后输出其数据。

程序代码如下:

package com.jingxuan.system;public class ArraysReverse {public static void main(String[] args) {int[] n = { 61, 62, 21, 34, 25, 82 };System.out.println("数组逆序输出为");for (int i = n.length; i > 0; i--) {System.out.print(n[i-1] +  " ");}}
}

运行结果如下:

数组逆序输出为
82 25 34 21 62 61 

5. 如何取一个整数中从右端开始的4~7位的数字?

程序分析:

1)先使a右移4位。

2)设置一个低4位全为1,其余全为0的数。可用(0 < <4)

3)将上面二者进行&运算。

程序代码如下:

package com.jingxuan.system;public class IntAchieve {public static void main(String[] args) {int a = 0;long b = 18745678948379l;a = (int) Math.floor(b % Math.pow(10, 7) / Math.pow(10, 3));System.out.println("从右端开始的4~7位:" + a);}
}

运行结果如下:

http://www.lryc.cn/news/292760.html

相关文章:

  • elk之基本crud
  • 搭建gitlab仓库
  • C语言-算法-最短路
  • 【操作系统·考研】I/O管理概述
  • Linux实验记录:使用vsftpd服务传输文件
  • 实习|基于SSM的实习管理系统设计与实现(源码+数据库+文档)
  • 商品介绍和规则参数图片映射和IP设置
  • 【React】前端React 代码中预览展示excel文件
  • QButtonGroup使用介绍
  • 最近nvm安装报错的原因找到了——npm原淘宝镜像正式到期!
  • docker面试问题二
  • 嵌入式中C 语言中的三块技术难点
  • 基于SSM的个性化旅游攻略定制系统设计与实现(有报告)。Javaee项目。ssm项目。
  • [React源码解析] Fiber (二)
  • Nginx 多项目部署,vue刷新404 解决方案
  • [C++]类和对象(中)
  • Kubernetes operator(五)api 和 apimachinery 篇
  • 接口自动化测试中解决接口间数据依赖
  • 七、测试计划(软件工程)
  • ElementUI Form:Checkbox 多选框
  • 如何统一监听Vue组件报错
  • python爬虫4
  • 【算法】约数之和(数论)
  • 走进CSS过渡效果的奇妙世界:详解CSS Transition
  • C++入坑基础知识点
  • RabbitMQ面试
  • 计算机网络(第六版)复习提纲21
  • 2路DIN2路DO2路AIN远程4GRTU模块钡铼技术S270
  • 从经典到创新,盘点情人节最受欢迎的五款新潮礼物
  • 数据库管理-第141期 DG PDB - Oracle DB 23c(20240129)