第二次笔试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二次笔试相关的知识,希望对你有一定的参考价值。

1.找区间,给定有序数列,找出指定目标的区间,要求复杂度为O(logn)。如[4,5,6,6,7,7,7,7,8,8,8,9,9,9] ,目标7,返回区间是[4,7]

答:肯定应用了中值法,因为复杂度为O(logn)。

 

稍后实现

2.求子集。给出一系列正整数集合求所有子集。如[1,2] -> [ [1] , [2] , [1, 2], [] ]

答:查了一下有两种方法

1.使用递归

稍后实现

2.使用二进制。所有的数在子集中只有两种状态:在->1,不在->0,就可以简单的使用+1,求出所有子集。实现如下

 1 void allSubArray(int * array, int total){
 2     int subCount = 1<<total;
 3     for(int i= 0;i<subCount;i++){
 4         int subArray[total];
 5         int subPos = 0;
 6         int mainPos = 0;
 7         int j= i;
 8         while(j!=0){
 9             if(j%2 == 1)
10             {
11                 subArray[subPos++] = array[mainPos];
12             }
13             j = j/2;
14             mainPos++;
15         }
16         showArray(subArray,subPos);
17         cout << endl;
18     }
19 }

二进制位为1,则加入子集,否则不加入,i做为计数,总个数 为2^total用左移计算的。showArray函数只是简单的输出函数。

 

3.实现简单的map[key] = value.要求满capacity时,覆盖最近不常用的

答:这道题很简单,创造动态二维数组data[capacity][2],data[i][0] = key, data[i][1] = value,count用于记录当前数组中的有效值个数 在get(key) 时,仅在[0,count-1]区间查找,并将找到的data[i] 移动到data[0],这样只用在需要覆盖时,覆盖data[capacity -1] 就行了。

以上是关于第二次笔试的主要内容,如果未能解决你的问题,请参考以下文章

第二次笔试

第二次在对话框中膨胀片段时出错

第二次java实习笔试(小公司)总结

使用选项卡第二次返回片段显示空白片段

我的回收站视图第二次未在片段中显示

在使用 FirebaseRecyclerPagingAdapter 时,第二次单击 RecyclerView 中的项目时,片段显示为空