Broken Code

1485 단어
sorted array 0 0 0 1 1 1 1 1 을 주고 첫 번째 1 의 위치를 찾아라.
경계 상황:array가 비어 있거나 모두 0입니다.
사고방식: 2분 찾기.최적화를 위해 마지막 수가 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 };

좋은 웹페이지 즐겨찾기