Broken Code

给一个sorted array 0 0 0 1 1 1 1,然后找出第一个1的位置。

边界情况:array为空或者全0。

思路:二分查找。为了优化,可以先判断最后一个数是不是0。

 1 class Solution  2 {  3 public:  4     int FindBrokenCode(vector<int>& nums)  5  {  6         if (!nums.size() || nums.back() == 0)  7             return -1;  8         int left = 0, right = nums.size() - 1;  9         while (left <= right) 10  { 11             int mid = (left + right) >> 1; 12             if (!nums[mid]) 13                 left = mid + 1; 14             else if (nums[mid] == 1 && (!mid || !nums[mid - 1])) 15                 return mid; 16             else right = mid; 17  } 18  } 19 };

 

你可能感兴趣的:(Broken Code)