首页 > 代码库 > 拼多多 笔试记录

拼多多 笔试记录

 一个二叉树的有2016个节点  最多有几个拥有两个子节点的
应该是1007  我擦写错了
第二个求一个直线段的长度  不知道对错 没有参考意义
第三个是输出旋转数组  源码

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int n,i,T=1,j;
cout<<"请输入一个n"<<endl;
cin>>n;
int a[100][100]={0};
int n1 = 0,n2 = 0;
int q = 1;
for(i = 1;i<=n*n;i++){
//右
if(T == 1){
a[n1][n2] = i;
n2++;
if(n2>(n-q)){
T = 2;
n2--;
}
}
if(T == 2){
a[n1][n2] = i;
n1++;
if(n1 >(n-q)){
T = 3;
n1--;
}
}
if(T == 3){
a[n1][n2] = i;
n2--;
if(n2 < q - 1){
T = 4;
n2++;
}
}
if(T == 4){
a[n1][n2] = i;
n1--;
if(n1 < q ){
T = 1;
q++;
n1++;
n2++;
}
}
}
for(i = 0;i<n;i++){
for(j = 0;j<n;j++){
printf("%d\t",a[i][j]);
}
printf("\n");
}
}

第四个就是  a1>=a2   a(n-1)<=a(n)
就是求最快构建数组的选项不是很难  但是有一个  时间复杂度我应该算错了  应该是  (n-2)/2
第五个是  有等长的a数组  和b数组
如果a数组中有两个方法变为b数组
1.a中的某些元素+1  算做一步
2.a中的某些元素*2  算作一部
比较简单  先贪心算一下  a(n)*2  的最多次数  即步数
然后  在算a(n)中与bn的最大插值  即步数  两个相加即可  如果刚开始先审查元素  a[i]如果比b[i]大的话 就直接返回  -1  退出
第6个就是考察  linux
ctrl  +c  是什么  取消  长时间运算  厉害了我的哥 这个我还是知道的  
但是有问 如何  取消  ctrl +c 的影响  我答:不晓得~~  这个真不知道 不对linux研究比较深的话 很GG
 

拼多多 笔试记录