字节跳动2018校招前端方向(第四批)

时长:120分钟 总分:100分

211浏览 0人已完成答题

题型介绍
题型 填空题 简答题
数量 2 2
1.
以下函数用于将一颗二叉搜索树转换成一个有序的双向链表。要求不能创建任何新的...
问题详情

以下函数用于将一颗二叉搜索树转换成一个有序的双向链表。要求不能创建任何新的节点,只能调整树种节点指针的指向。

如输入下图中左边的二叉搜索树,则输出转换后的排序双向链表:

      10

    /      \

   6      14

  /  \      /  \

4   8  12  16

转换成:

 4 <=> 6 <=> 8 <=> 10 <=> 12  <=> 14 <=> 16

 

请指出程序代码中错误的地方(问题不止一处,请尽量找出所有你认为错误的地方):

1  #include <stack>

2  using namespace std

3

4  struct TreeNode {

5        int val  

6        TreeNode *left, *right  

7  }

8

9  TreeNode* Convert(TreeNode* root){  

10         if (root == NULL)  

11             return root

12

13         TreeNode* listHead = NULL

14         TreeNode* listLastNode = NULL

15

16         stack<TreeNode*> s

17         while(root){

18             while(root){

19                 root=root->left

20                 s.push(root)

21             }

22             root=s.top()  

23             s.pop()

24             if (listHead == NULL){

25                 listHead = root

26             }else{

27                 listLastNode->right = root

28             }

29             listLastNode = root

30             root= root->right

31         }

32         return listHead

33 }

2.
设计一个红包生成的模拟器,要求实现如下功能设计: ...
问题详情

设计一个红包生成的模拟器,要求实现如下功能设计:
786793tcj.jpg
图一: 开始页面
786793tcj.jpg


图二: 生成过程页面

786793tcj_2.jpg 

图三: 结果页面

 786793tcj_3.jpg

图四: 整体效果(动态)

786793tcj_4.jpg

图五: 头像素材地址:

786793tcj_5.jpg

 

设计需求

1. 页面上支持自定义红包输入的个数和金额,数值类型不能为空且必须大于1,效果如图一所示

2. 点击发送红包按钮,可以进入红包生成的loading页面,效果如图二所示,模态框的宽高为300*450px,垂直居中页面,包含必要的头像和文案,拆红包按钮可以围绕中轴线做旋转动画

3. 点击拆红包按钮后,会有一个向上的开红包的动画,根据前面输入的个数和金额生成红包获取列表,红包生成规则见附注。

4. 金额最高的作为“手气最佳”进行标注,见图三中的领取榜单所示

5. 从生成的红包列表中随机取出一个值作为你抢到的红包值,见图三中头像下的数字所示

6. 点击右上角的关闭按钮,可以关闭弹框,同时清空领取榜单里的记录,方便下次重新生成

红包生成规则

1. 红包的数值是随机的,并且数值的分布近似于正态分布。

2. 所有人都能分到红包,不会出现红包数值为0的情况,额度在0.01和(剩余平均值*2)之间。

3. 所有人的红包数值加起来等于支付的金额

4. 整体效果参考动态图,可以根据自身能力的情况侧重完成所擅长的环节(css页面,js交互,生成逻辑等)

3.
编程题1
问题详情

有三只球队,每只球队编号分别为球队1,球队2,球队3,这三只球队一共需要进行 n 场比赛。现在已经踢完了k场比赛,每场比赛不能打平,踢赢一场比赛得一分,输了不得分不减分。已知球队1和球队2的比分相差d1分,球队2和球队3的比分相差d2分,每场比赛可以任意选择两只队伍进行。求如果打完最后的 (n-k) 场比赛,有没有可能三只球队的分数打平。

 输入描述: 第一行包含一个数字 t (1 <= t <= 10)
接下来的t行每行包括四个数字 n, k, d1, d2(1 <= n <= 10^12 0 <= k <= n, 0 <= d1, d2 <= k)输入样例: 2 3 3 0 0 3 3 3 3 输出描述: 每行的比分数据,最终三只球队若能够打平,则输出“yes”,否则输出“no”输出样例 yes no
4.
编程题2
问题详情

有一个仅包含’a’和’b’两种字符的字符串s,长度为n,每次操作可以把一个字符做一次转换(把一个’a’设置为’b’,或者把一个’b’置成’a’);但是操作的次数有上限m,问在有限的操作数范围内,能够得到最大连续的相同字符的子串的长度是多少。 输入描述: 第一行两个整数 n , m (1<=m<=n<=50000),第二行为长度为n且只包含’a’和’b’的字符串s。输入样例: 8 1 aabaabaa 输出描述: 输出在操作次数不超过 m 的情况下,能够得到的 最大连续 全’a’子串或全’b’子串的长度。输出样例 5