数据结构与算法——每日一练(11月)

每日一练

11.1

  • 对字符串 “AAAABCABBBC” 进行哈夫曼编码,则编码后的字符串(不计入编码规则相关信息,仅考虑每个字符对应的编码占用的字节数)占用多少比特?( )。

A. 15

B. 17

C. 18

D. 20

【答案】B

【解析】 一种合法的哈夫曼编码方式为:

  • ‘A’:出现 5 次,编码为 ‘0’
  • ‘B’:出现 4 次,编码为 ‘11’
  • ‘C’:出现 2 次,编码为 ‘10’

占用的比特数为:5×1+4×2+2×2 = 17 bit。

img

11.2

  • 对字符串 “KAIKEKKBKKBKAIKE” 进行哈夫曼编码,则编码后的字符串(不计入编码规则相关信息,仅考虑每个字符对应的编码占用的字节数)占用多少比特?( )。

A. 26

B. 29

C. 30

D. 32

【答案】D

【解析】 一种合法的哈夫曼编码方式为:

  • ‘K’:出现 8 次,编码为 ‘1’
  • ‘A’:出现 2 次,编码为 ‘010’
  • ‘I’:出现 2 次,编码为 ‘011’
  • ‘B’:出现 2 次,编码为 ‘000’
  • ‘E’:出现 2 次,编码为 ‘001’

占用的比特数为:8×1+2×3+2×3+2×3+2×3 = 32 bit。

img

11.3

  • 若以 {1, 2, 3, 4, 5} 作为叶子节点的权值构造哈夫曼树,则带权路径长度是( )。

A. 25

B. 30

C. 33

D. 38

【答案】C

【解析】 一种合法的建树方案如下,对应的带权路径长度为1×3+2×3+3×2+4×2+5×2 = 33。
img

11.4

  • 若以 {4, 5, 2, 7, 8} 作为叶子节点的权值构造哈夫曼树,则带权路径长度是( )。

A. 55

B. 56

C. 57

D. 58

【答案】D

【解析】 一种合法的建树方案如下,对应的带权路径长度为4×3+5×2+2×3+7×2+8×2 = 58。
在这里插入图片描述

11.5

  • 哈夫曼树是n个带权叶子结点构成的所有二叉树中( )最小的二叉树。

A. 度

B. 带权路径长度

C. 高度

D. 权值

【答案】B

【解析】 哈夫曼树是n个带权叶子结点构成的所有二叉树中带权路径长度最小的二叉树。

11.6

  • 以下代码运行输出的是
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. 运行出错

【答案】C

11.7

  • 下列说法正确的是()

A. WebLogic中开发消息Bean的non-persistent 方式可以保证消息的可靠

B. EJB容器发生错误,non-persistent方式下JMS容器仍然会将消息发送

C. EJB容器发生错误,persistent方式下JMS容器仍然会将消息发送

D. EJB容器发生错误,两种方式下JMS容器仍会在MDB可用的时候将消息发送

【答案】C

【解析】 weblogic中开发消息Bean时的persistent与non-persisten的差别: persistent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS服务器依然会将消息在此MDB可用的时候发送过来。 non-persistent方式的消息将被丢弃。

11.8

  • 数列 {2, 1, 3, 5, 1, 2, 4, 7} 对应的前缀和数列为( )。

A. 0, -1, 2, 2, -4, 1, 2, 3

B. 2, 3, 5, 12, 13, 15, 19, 25

C. 2, 3, 6, 11, 12, 14, 18, 25

D. 2, 3, 6, 11, 13, 16, 20, 25

【答案】C

【解析】 定义原数列的第i个元素为ai,前缀和数列的第i个元素为sumi,则可得推导公式为:sum1=a1,当i>1时,sumi=sumi-1+ai。选项C正确。

11.9

  • 下列哪个数列对应的前缀和数列为 {1, 2, 3, 4, 6, 9, 11, 14}?( )。

A. 1, 1, 1, 1, 1, 2, 1, 2

B. 1, 1, 1, 1, 2, 3, 2, 3

C. 1, 2, 1, 2, 1, 2, 1, 2

D. 1, 2, 3, 4, 2, 3, 3, 3

【答案】B

【解析】 定义原数列的第i个元素为ai,前缀和数列的第i个元素为sumi,则可得推导公式为:a1=sum1,当i>1时,ai=sumi-sumi-1。选项B正确。

11.10

  • 使用树状数组维护大小为n的区间,动态单点修改的时间复杂度、查询任意前缀和的时间复杂度以及树状数组的空间复杂度分别为( )。

A. O(1)、O(log n)、O(n)

B. O(1)、O(n)、O(n)

C. O(log n)、O(log n)、O(n)

D. O(log n)、O(log n)、O(n log n)

【答案】C

【解析】 树状数组可以以 O(log n) 的时间得到任意前缀和,并同时支持在 O(log n) 时间内动态单点值的修改,空间复杂度为 O(n)。

11.11

  • 设树状数组维护的区间为[1,100],则对区间第5个元素进行+20操作会对树状数组中的( )个元素进行修改。

A. 5

B. 6

C. 7

D. 8

【答案】B

【解析】 树状数组中第 5, 6, 8, 16, 32, 64 个位置的元素进行+20操作。

11.12

  • 下列关于Java并发的说法中正确的是()

A. CopyOnWriteArrayList适用于写多读少的并发场景

B. ReadWriteLock适用于读多写少的并发场景

C. ConcurrentHashMap的写操作不需要加锁,读操作需要加锁

D. 只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了

【答案】B

【解析】 CopyOnWriteArrayList适用于写少读多的并发场景;ReadWriteLock即为读写锁,他要求写与写之间互斥,读与写之间互斥,读与读之间可以并发执行。在读多写少的情况下可以提高效率;ConcurrentHashMap是同步的HashMap,读写都加锁;volatile只保证多线程操作的可见性,不保证原子性。

11.13

  • 数列 3, 5, 2, 4, 1, 4, 5, 6, 3, 2 对应的树状数组中的每个元素分别为( )。

A. 3, 5, 2, 6, 5, 4, 5, 6, 9, 11

B. 3, 8, 2, 14, 1, 5, 5, 30, 3, 5

C. 3, 8, 10, 14, 1, 5, 10, 16, 3, 5

D. 3, 8, 10, 14, 15, 19, 24, 30, 3, 5

【答案】B

【解析】 定义一个 lowbit 函数,返回参数转为二进制后,最后一个 1 的位置所代表的数值,树状数组的第 x 个元素表示的是区间 [x-lowbit(x)+1, x] 对应的区间元素和。不妨设 fi 表示树状数组的第 i 个元素,则:

- 第 1 个元素对应的区间范围为 [1,1],f1=3;
- 第 2 个元素对应的区间范围为 [1,2],f2=3+5=8;
- 第 3 个元素对应的区间范围为 [3,3],f3=2;
- 第 4 个元素对应的区间范围为 [1,4],f4=3+5+2+4=14;
- 第 5 个元素对应的区间范围为 [5,5],f5=1;
- 第 6 个元素对应的区间范围为 [5,6],f6=1+4=5;
- 第 7 个元素对应的区间范围为 [7,7],f7=5;
- 第 8 个元素对应的区间范围为 [1,8],f8=3+5+2+4+1+4+5+6=30;
- 第 9 个元素对应的区间范围为 [9,9],f9=3;
- 第 10 个元素对应的区间范围为 [9,10],f10=3+2=5。

11.14

  • Test.main()函数执行后的输出是( )
class Test {
    public static void main(String[] args) {
        System.out.println(new B().getValue());
    }
    static class A {
        protected int value;
        public A (int v) {
            setValue(v);
        }
        public void setValue(int value) {
            this.value = value;
        }
        public int getValue() {
            try {
                value++;
                return value;
            } finally {
                this.setValue(value);
                System.out.println(value);
            }
        }
    }
    static class B extends A {
        public B() {
            super();
            setValue(getValue() - 3);
        }
        public void setValue(int value) {
            super.setValue(2 * value);
        }
    }
}

A. 6 7 7

B. 22 34 17

C. 22 74 74

D. 11 17 34

【答案】B

11.15

  • 整数 208 和 2730 的最大公约数为( )。

A. 1

B. 2

C. 26

D. 34

【答案】C

11.16

  • 整数 210 和 330 的最小公倍数为( )。

A. 30

B. 1150

C. 2310

D. 4620

【答案】C

11.17

  • 7120 (7的120次方)除以 13 的余数为( )。

A. 1

B. 3

C. 5

D. 7

【答案】A

【解析】 7120 (1)← 760(1) ← 730 (12)← 715 (5)← 77 (6)← 73(5) ← 71 (7)。

11.18

  • 10000 以内的正整数中有( )个数与 10000 互质。

A. 1000

B. 4000

C. 5000

D. 6000

【答案】B

【解析】 将 10000 分解质因数的:10000 = 24 × 54。可以发现,10000 只有 2 和 5 这两个质因数,10000 以内能被 2 整数的数有 10000/2 = 5000 个,能被 5 整数的数有 10000/5 = 2000 个,其中同时能被 2 和 5 整除的数有 10000/10 = 1000 个,所以 10000 以内包含因数 2 或 5 的数共有 5000 + 2000 - 1000 = 6000 个,据此可以得出不含因数 2 或 5 的数(即与 10000 互质的数)有 10000 - 6000 = 4000 个。

11.19

  • 以下哪个整数是 12 关于模 13 的逆?( )。

A. 5

B. 8

C. 10

D. 12

【答案】D

【解析】 我们称一个整数 a 是另一个整数 b 关于模整数 c 的逆,当且仅当 a × b ≡ 1 (mod c)(此处 “≡” 表示同余运算符)。本题中,(12 × 12) ÷ 13 = 11 …… 1,所以 12 是 12 关于模 13 的逆。

11.20

  • 下面有关JSP内置对象的描述,说法错误的是?

A. session对象:session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止

B. request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应

C. application对象:多个application对象实现了用户间数据的共享,可存放全局变量

D. response对象:response对象包含了响应客户请求的有关信息

【答案】C

11.21

  • 关于运行时常量池,下列哪个说法是错误的

A. 运行时常量池大小受栈区大小的影响

B. 运行时常量池大小受方法区大小的影响

C. 存放了编译时期生成的各种字面量

D. 存放编译时期生成的符号引用

【答案】A

11.22

  • 以下莫比乌斯函数 μ ( d ) \mu(d) μ(d) 的结果错误的是( )。

A. μ ( 1 ) = 1 \mu(1) = 1 μ(1)=1

B. μ ( 2 ) = 1 \mu(2) = 1 μ(2)=1

C. μ ( 6 ) = 1 \mu(6) = 1 μ(6)=1

D. μ ( 8 ) = 0 \mu(8) = 0 μ(8)=0

【答案】B

【解析】 莫比乌斯函数公式如下,所以 μ ( 2 ) = ( − 1 ) 1 = − 1 \mu(2) = (-1)^1 = -1 μ(2)=(1)1=1,选项B错误。

在这里插入图片描述

11.23

  • 莫比乌斯函数 μ ( 210 ) \mu(210) μ(210) 的值为( )。

A. -1

B. 0

C. 1

D. 2

【答案】C

【解析】 因为 210 = 2 × 3 × 5 × 7 210 = 2 \times 3 \times 5 \times 7 210=2×3×5×7,所以 μ ( 210 ) = ( − 1 ) 4 = 1 \mu(210) = (-1)^4 = 1 μ(210)=(1)4=1

11.24

  • 莫比乌斯函数 μ ( 735 ) \mu(735) μ(735) 的值为( )。

A. -1

B. 0

C. 1

D. 2

【答案】B

【解析】 因为 735 = 3 × 5 × 7 2 735 = 3 \times 5 \times 7^2 735=3×5×72,包含两个相同的质因数 7 7 7,所以 μ ( 735 ) = 0 \mu(735) = 0 μ(735)=0

11.25

  • 假设对于数论函数 f ( n ) f(n) f(n) F ( n ) F(n) F(n),有以下关系式:

    F ( n ) = ∑ d ∣ n f ( d ) F(n) = \sum\limits_{d|n} f(d) F(n)=dnf(d)

    则其对应的莫比乌斯反演公式定义为

    f ( n ) = ∑ d ∣ n μ ( d ) F ( d ) f(n) = \sum\limits_{d|n} \mu(d) F(d) f(n)=dnμ(d)F(d)

    f ( n ) = ∑ d ∣ n μ ( d ) F ( n d ) f(n) = \sum\limits_{d|n} \mu(d) F(\frac{n}{d}) f(n)=dnμ(d)F(dn)

    f ( n ) = ∑ n ∣ d μ ( d ) F ( d ) f(n) = \sum\limits_{n|d} \mu(d) F(d) f(n)=ndμ(d)F(d)

    f ( n ) = ∑ n ∣ d μ ( d ) F ( d n ) f(n) = \sum\limits_{n|d} \mu(d) F(\frac{d}{n}) f(n)=ndμ(d)F(nd)

A. ①

B. ②

C. ③

D. ④

【答案】B

【解析】 假设对于数论函数 f ( n ) f(n) f(n) F ( n ) F(n) F(n),有以下关系式: F ( n ) = ∑ d ∣ n f ( d ) F(n) = \sum\limits_{d|n} f(d) F(n)=dnf(d)

则其对应的莫比乌斯反演公式定义为 f ( n ) = ∑ n ∣ d μ ( d ) F ( d ) f(n) = \sum\limits_{n|d} \mu(d) F(d) f(n)=ndμ(d)F(d)

11.26

  • 以下哪个函数不是积性函数?( )。

A. 欧拉函数 φ ( n ) \varphi(n) φ(n)

B. 莫比乌斯函数 μ ( n ) \mu(n) μ(n)

C. 幂函数 I d k ( n ) = n k Idk(n) = n^k Idk(n)=nk

D. 二次函数 g ( n ) = x 2 + 1 g(n) = x^2 + 1 g(n)=x2+1

【答案】D

【解析】 积性函数:对于任意互质的整数 a a a b b b 有性质 f ( a ) f ( b ) = f ( a b ) f(a) f(b) = f(a b) f(a)f(b)=f(ab)。显然选项D不满足这个条件。

11.27

  • 以下代码运行结果的描述是正确的是?
class Car extends Vehicle{
    public static void main (String[] args){
        new  Car(). run();
    }
    private final void run(){
        System. out. println ("Car");
    }
}
class Vehicle{
    private final void run(){
        System. out. println("Vehicle");
    }
}

A. Car

B. Vehicle

C. Compiler error at line 3

D. Compiler error at line 5

【答案】A

11.28

  • 如下代码,执行test()函数后,结果为()
public class Test2{
    public void add(Byte b){
        b = b++;
    }

    public static void main(String[] args) {
        Byte a = 127;
        Byte b = 127;
        Test2 test2 = new Test2();
        test2.add(++a);
        System.out.print(a + " ");
        test2.add(b);
        System.out.print(b + "");
    }
}

A. 127 127

B. 128 127

C. 129 128

D. 以上都不对

【答案】D

【解析】 正确答案:-128 127

11.29

  • 费马小定理(英语:Fermat’s little theorem)是数论中的一个定理。假如a是一个整数,p是一个质数,那么ap-a是p的倍数,可以表示为 a p ≡ a (  mod  p ) a^p \equiv a (\text{ mod } p) apa( mod p) 。则对于一个整数a和一个质数p来说,以下哪个选项可以表示a关于模p的逆?( )。

A. ap

B. ap-1

C. ap

D. ap+1

【答案】A

【解析】 因为 a p = a (  mod  p ) a^p = a(\text{ mod } p) ap=a( mod p),所以 a p − 1 ≡ 1 (  mod  p ) a^{p-1} \equiv 1(\text{ mod } p) ap11( mod p),对于 a a a的逆 a − 1 a^{-1} a1来说, a ⋅ a − 1 ≡ 1 (  mod  p ) a \cdot a^{-1} \equiv 1(\text{ mod } p) aa11( mod p),而 a ⋅ a p − 2 = a p − 1 ≡ 1 (  mod  p ) a \cdot a^{p-2} = a^{p-1} \equiv 1 (\text{ mod } p) aap2=ap11( mod p),所以 a − 1 ≡ a p − 2 (  mod  p ) a^{-1} \equiv a^{p-2} (\text{ mod } p) a1ap2( mod p)

11.30

  • 欧拉函数 φ ( 15 ) \varphi(15) φ(15) 的值为( )。

A. 5

B. 8

C. 11

D. 14

【答案】B

【解析】 欧拉函数 φ ( n ) \varphi(n) φ(n) 的值是所有小于或等于 n n n 的正整数中与 n n n 互素的数的个数。所有小于或等于 15 15 15 的正整数中与 15 15 15 互素的数有 8 8 8 个,它们分别为 1 , 2 , 4 , 7 , 8 , 11 , 13 , 14 1,2,4,7,8,11,13,14 1,2,4,7,8,11,13,14,所以 φ ( 15 ) = 8 \varphi(15) = 8 φ(15)=8

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

讲文明的喜羊羊拒绝pua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值