Advertisement
Guest User

287. Find the Duplicate Number

a guest
Feb 25th, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     int findDuplicate(vector<int>& nums) {
  4.         // [1:n] -> [1:n/2] & [n/2+1: n]
  5.         int left = 1;
  6.         int right = nums.size() - 1;
  7.        
  8.         while (left < right)
  9.         {
  10.             int mid = left + (right - left) / 2;
  11.             auto count = count_if(nums.begin(), nums.end(), [left, mid](const int &num){
  12.                 return num >= left && num <= mid;
  13.             });
  14.            
  15.             if (count > mid - left + 1)
  16.             {
  17.                 right = mid;
  18.             }
  19.             else
  20.             {
  21.                 left = mid + 1;
  22.             }
  23.         }
  24.        
  25.         return right;
  26.     }
  27. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement