回复: 30
跳转到指定楼层
上一主题 下一主题
收起左侧

Airbnb 北京onsite

全局:

2019(4-6月) 码农类General 本科 全职@Airbnb - 内推 - Onsite  | Fail | 在职跳槽
北京Airbnb onsite 已跪,分享两道onsite题
第一题打印图形

.1point3acres

实现一个 print(int n) 的函数打印图形


第二题  x-or tree. From 1point 3acres bbs

给定树的顶点个数  n
和多叉树的多条边
2 1  //2为子节点、1为父节点
3 1
4 5
7 5
5 3
6 2
9 6-baidu 1point3acres
8 9
10 9 ..

给定初始化数组表示每个节点的值
1 0 0 1 0 1 0 1 0

目标数组,每个节点的值
1 1 0 1 0 1 1 1 0

每个节点的值修改时,他的孙子节点(递归下去,孙子节点的孙子节点)对应值需要反转(0-》1,1-》0)

求重初始化数组到目标数组最少需要修改几个节点,需要修改的节点是什么


. From 1point 3acres bbs
. From 1point 3acres bbs

本帖子中包含更多资源

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x

评分

参与人数 13大米 +35 收起 理由
赵布斯 + 1 很有用的信息!
gofree + 2 给你点个赞!
liger + 1 很有用的信息!
匿名用户-XVBDR + 20
zzssggjj + 2 很有用的信息!

查看全部评分


上一篇:阿里巴巴前端挂经
下一篇:baidu挂经

本帖被以下淘专辑推荐:

  • · Airbnb|主题: 11, 订阅: 1
推荐
magicsets 2019-6-18 11:49:15 | 只看该作者
全局:
第一题是打印一个分形(fractal),分形具有递归结构,当前n的某个坐标上的字符可以由n - 1子分形的某个对应字符平移(复杂的还可以旋转拉伸——也就是affine transform)得到。
. .и
写了一份参考代码:
  1. #include <iostream>
  2. #include <memory>
  3. . .и
  4. class Shape {
  5. public:
  6.   virtual ~Shape() {} ..
  7.   virtual int GetNumRows() const = 0; ..
  8.   virtual int GetNumCols() const = 0;
  9.   virtual char GetCell(int row, int col) const = 0;

  10.   static std::unique_ptr<Shape> Create(int degree);
  11. };

  12. // 最基础的三角形
  13. class BaseTriangle : public Shape {
  14. public:
  15.   int GetNumRows() const override { return 2; }-baidu 1point3acres
  16.   int GetNumCols() const override { return 4; }
  17. . 1point3acres.com
  18.   char GetCell(int row, int col) const override {. 1point 3acres
  19.     constexpr char kShape[2][4] = {. Χ
  20.         {' ', '/', '\\', ' ' }, {'/', '_', '_', '\\' }};.google  и
  21.     return kShape[row][col];
  22.   }
  23. };

  24. // 否则是一个递归分形,某个位置的字符可以依靠平移坐标再通过子分形计算
  25. class TriangleFractal : public Shape {
  26. public:
  27.   TriangleFractal(int degree)
  28.       : sub_fractal_(Shape::Create(degree - 1)),
  29.         half_num_rows_(sub_fractal_->GetNumRows()),
  30.         half_num_cols_(sub_fractal_->GetNumCols()),
  31.         half_half_num_cols_(half_num_cols_ / 2),
  32.         num_rows_(half_num_rows_ * 2),.--
  33.         num_cols_(half_num_cols_ * 2) {}

  34.   int GetNumRows() const override { return num_rows_; }
  35.   int GetNumCols() const override { return num_cols_; }

  36.   char GetCell(int row, int col) const override {
  37.     // 上面部分
  38.     if (row < half_num_rows_) {
  39.       if (col >= half_half_num_cols_ &&
  40.           col < half_num_cols_ + half_half_num_cols_) {
  41.         return sub_fractal_->GetCell(row, col - half_half_num_cols_);
  42.       }
  43.       return ' ';
  44.     }
  45.     // 左下部分
  46.     if (col < half_num_cols_) {
  47.       return sub_fractal_->GetCell(row - half_num_rows_, col);
  48.     }
  49.     // 右下部分
  50.     return sub_fractal_->GetCell(row - half_num_rows_, col - half_num_cols_); ..
  51.   }

  52. private:
  53.   const std::unique_ptr<Shape> sub_fractal_;
  54.   const int half_num_rows_;
  55.   const int half_num_cols_;
  56.   const int half_half_num_cols_;
  57.   const int num_rows_;
  58.   const int num_cols_;.--
  59. };

  60. std::unique_ptr<Shape> Shape::Create(int degree) {
  61.   // 要求degree大于等于1,这里就不做check了
  62.   if (degree == 1) {
  63.     return std::make_unique<BaseTriangle>();
  64.   }
  65.   return std::make_unique<TriangleFractal>(degree);
  66. } ..

  67. void PrintShape(int degree) {.1point3acres
  68.   std::unique_ptr<Shape> shape = Shape::Create(degree);
  69.   for (int i = 0; i < shape->GetNumRows(); ++i) {
  70.     for (int j = 0; j < shape->GetNumCols(); ++j) {
  71.       std::cout << shape->GetCell(i, j);
  72.     }
  73.     std::cout << "\n";
  74.   }.google  и
  75. }. 1point3acres
  76. . Waral dи,
  77. int main(int argc, char* argv[]) {.google  и
  78.   for (int n = 1; n < 5; ++n) {
  79.     std::cout << "n = " << n << "\n";
  80.     PrintShape(n);. 1point 3 acres
  81.     std::cout << "\n";.google  и
  82.   }
  83.   return 0;
  84. }. ----
复制代码

评分

参与人数 2大米 +2 收起 理由
maple1986 + 1 很有用的信息!
Ht1990 + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

推荐
qdaudioqd 2019-6-25 19:55:47 | 只看该作者
全局:
谢谢楼主分享!
回复

使用道具 举报

推荐
 楼主| Ht1990 2019-6-18 11:18:57 | 只看该作者
全局:
crazycodyman 发表于 2019-6-18 11:15. From 1point 3acres bbs
这比地里的面经难多了,是不是外企在国内自动提高bar啊

跟airbnb的朋友聊了聊,18年底之前的面试题还和地理的面经相似度很大,19年这半年已经换了不少题了,如果去面地理的题还是要准备,但出现原题的概率也就50%吧
回复

使用道具 举报

🔗
 楼主| Ht1990 2019-6-17 20:13:57 | 只看该作者
全局:
北京的面试题库 和地理面的还是有较大不同的。
回复

使用道具 举报

全局:
有大佬知道怎么做吗?楼主面的mobile还是backend?
回复

使用道具 举报

🔗
 楼主| Ht1990 2019-6-18 10:22:02 | 只看该作者
全局:
crazycodyman 发表于 2019-6-17 23:19-baidu 1point3acres
有大佬知道怎么做吗?楼主面的mobile还是backend?

第一题,没啥思路,后来想了想,可能要动态计算这个二位数组的坐标
第二题,bfs,但是在处理孙子节点的翻转时也很麻烦
回复

使用道具 举报

🔗
crazycodyman 2019-6-18 11:15:37 | 只看该作者
全局:
Ht1990 发表于 2019-6-18 10:22
第一题,没啥思路,后来想了想,可能要动态计算这个二位数组的坐标
第二题,bfs,但是在处理孙子节点的 ...

这比地里的面经难多了,是不是外企在国内自动提高bar啊
回复

使用道具 举报

🔗
 楼主| Ht1990 2019-6-18 14:50:37 | 只看该作者
全局:
http://www.voidcn.com/article/p-srkptnpu-bnt.html-baidu 1point3acres
贴一个链接,是各种分型打印的问题
回复

使用道具 举报

🔗
hyserendipity 2019-6-18 21:14:21 | 只看该作者
全局:
在想是不是去刷一下poj了。
回复

使用道具 举报

🔗
fanff 2019-6-18 23:07:13 来自APP | 只看该作者
全局:
赞详细的解答
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表