[问答题] 题目描述
以下函数用于将一颗二叉搜索树转换成一个有序的双向链表。要求不能创建任何新的节点,只能调整树种节点指针的指向。
如输入下图中左边的二叉搜索树,则输出转换后的排序双向链表:
10
/ \\
6 14
/ \\ / \\
4 8 12 16
转换成:
4 <=> 6 <=> 8 <=> 10 <=> 12 <=> 14 <=> 16
请指出程序代码中错误的地方(问题不止一处,请尽量找出所有你认为错误的地方):
1 #include
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
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 }
[问答题] 题目描述
对于广告投放引擎, 广告库索引服务是基础服务,每次广告请求会从广告索引中找出匹配的广告创意列表。假设每一次请求会携带 地域、运营商、设备机型、网络接入方式 等信息,每个广告策略都可以设置 地域、运营商、设备机型、网络接入方式 的投放定向(即只能投放到定向匹配的请求, 比如只投放特定地域)。每个广告策略下包含N(N>=1)个广告创意。设计一个广告库索引模块, 需要支持以下几点:
1. 支持多线程广告请求可以快速的找到匹配的所有广告创意
2. 支持广告库数据的热更新
3. 支持十万级广告策略,百万级广告创意
4. 支持高并发请求
请给出广告库索引服务整体系统设计以及所使用到的数据结构设计;
[编程题] 编程题1
时间限制:2秒
空间限制:65536K
有三只球队,每只球队编号分别为球队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)
输出描述:
每行的比分数据,最终三只球队若能够打平,则输出“yes”,否则输出“no”
输入例子1:
2 3 3 0 0 3 3 3 3
输出例子1:
yes