123
返回列表 发新帖
楼主: 匿名
跳转到指定楼层
上一主题 下一主题
收起左侧

2.17 GOOGLE ONSITE 跪经 求分

🔗
tigercode 2016-9-18 03:10:59 | 只看该作者
全局:
4, 给的tree node的class是啥样的?
回复

使用道具 举报

🔗
liurudahai 2016-10-5 12:13:35 | 只看该作者
全局:
xblwyc 发表于 2016-3-21 16:17
概率那题应该是用二分来解得,因为一般来讲N会给的极大,K应该是个合理的数字。
可以考虑把每一个禁止的数 ...

没看懂,能具体讲讲你的2分是在求什么吗?
回复

使用道具 举报

🔗
codemonk 2017-9-27 05:37:29 | 只看该作者
全局:
把第三轮写了下
  1. #include <iostream>
  2. #include <vector>

  3. using namespace std;
  4. #define null INT_MAX
  5. vector<int> nums = {1,2,3,null, null, 4,null,5,null,6,7,8};

  6. int search(int start, int end, int target) {
  7.     while(start < end) {
  8.         int mid = start + (end - start) / 2;
  9.         if(nums[mid] == null) {
  10.             int i = search(start, mid-1, target);
  11.             if(nums[i] == target) return i;
  12.             i = search(mid+1, end, target);
  13.             if(nums[i] == target) return i;
  14.         }
  15.         else {
  16.             if(nums[mid] < target) start = mid + 1;
  17.             else end = mid;
  18.         }
  19.     }
  20.     return start;
  21. }

  22. int main(int argc, const char * argv[]) {
  23.     // insert code here...
  24.     cout << search(0, nums.size()-1, 5) << endl;
  25.     return 0;
  26. }
复制代码
回复

使用道具 举报

🔗
codemonk 2017-9-27 05:53:32 | 只看该作者
全局:
第二轮第二题 似乎是reservoir sampling, 和利口 糁就把 比较像

  1. int randomSampleNotInList(vector<int>& nums, int N){
  2.     unordered_set<int> avoid(nums.begin(), nums.end());
  3.     int ans = 0, cnt_valid = 0;
  4.     for(int i = 1; i <= N; i++) {
  5.         if(avoid.count(i)) continue;
  6.         if(rand() % (++cnt_valid) == 0) ans = i;
  7.     }
  8.     return ans;
  9. }

  10. int main(int argc, const char * argv[]) {
  11.     // insert code here...
  12.     srand(time(NULL));
  13.     vector<int> avoid = {1,2,6,7,9};
  14.     int cnt[11] = {0};
  15.     int rep = 100000;
  16.     for(int i = 0; i < rep; i++) {
  17.         cnt[randomSampleNotInList(avoid, 10)]++;
  18.     }
  19.     for(int i = 1; i <= 10; i++) {
  20.         cout << "num:" << i << "   prob:" << (double)cnt[i] / rep << endl;
  21.     }
  22.     return 0;
  23. }
复制代码


结果如下
  1. num:1   prob:0
  2. num:2   prob:0
  3. num:3   prob:0.20183
  4. num:4   prob:0.20133
  5. num:5   prob:0.19925
  6. num:6   prob:0
  7. num:7   prob:0
  8. num:8   prob:0.19941
  9. num:9   prob:0
  10. num:10   prob:0.19818
  11. Program ended with exit code: 0
复制代码
回复

使用道具 举报

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

本版积分规则

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