中级农民
- 积分
- 138
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-9-7
- 最后登录
- 1970-1-1
|
My solution in C++
- // number of missing integers in range nums[start, end]
- int numMissing(vector<int>& nums, int start, int end) {
- return (nums[end]-nums[start]) - (end - start);
- }
- int getKthMissing(vector<int>& nums, int k) {
- int n = nums.size();
-
- // validate k
- if (k <= 0 || numMissing(nums, 0, n-1) < k) return INT_MIN;
-
- int L = 0, R = n-1;
- while (R-L > 1) {
- int mid = (L+R)/2;
- int missing = numMissing(nums, L, mid);
- if (missing >= k) R = mid;
- else {
- L = mid;
- k -= missing;
- }
- }
-
- return nums[L] + k;
- }
复制代码 |
|