📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
楼主: tinlittle
跳转到指定楼层
上一主题 下一主题
收起左侧

[高频题] 【面试新题】绝妙的二分查找题,一定要练习一下

   
🔗
Shilcare 2019-11-14 23:42:03 | 只看该作者
全局:
类似蠡口妖灵遛凌, 只是missing的不会超过原数组的最大值

回复

使用道具 举报

🔗
zzgzzm 2020-1-6 11:49:31 | 只看该作者
全局:
My solution in C++
  1. // number of missing integers in range nums[start, end]
  2. int numMissing(vector<int>& nums, int start, int end) {
  3.   return (nums[end]-nums[start]) - (end - start);
  4. }

  5. int getKthMissing(vector<int>& nums, int k) {
  6.   int n = nums.size();
  7.   
  8.   // validate k
  9.   if (k <= 0 || numMissing(nums, 0, n-1) < k) return INT_MIN;
  10.   
  11.   int L = 0, R = n-1;
  12.   while (R-L > 1) {
  13.     int mid = (L+R)/2;
  14.     int missing = numMissing(nums, L, mid);
  15.     if (missing >= k) R = mid;
  16.     else {
  17.       L = mid;
  18.       k -= missing;
  19.     }
  20.   }
  21.   
  22.   return nums[L] + k;
  23. }
复制代码
回复

使用道具 举报

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

本版积分规则

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