927. Three Equal Parts
Given an array? If it is possible,return?any?
If it is not possible,return? Note that the entire part is used when considering what binary value it represents.? For example,? ? Example 1: Input: [1,1]
Output: [0,3]
Example 2: Input: [1,1]
Output: [-1,-1]
? Note:
? class Solution { public: vector<int> threeEqualParts(vector<int>& A) { int size = A.size(); int countOfOne = 0; for (auto c : A) if (c == 1) countOfOne++; // if there don‘t have 1 in the vector if (countOfOne == 0) return {0,size-1}; // if the count of one is not a multiple of 3,then we can never find a possible partition since //there will be at least one partion that will have difference number of one hence different binary //representation //For example,given: //0000110 110 110 // | | | // i j //Total number of ones = 6 if (countOfOne%3 != 0) return {-1,-1}; int k = countOfOne / 3; int i; for (i = 0; i < size; ++i) if (A[i] == 1) break; int begin = i; int temp = 0; for (i = 0; i < size; ++i) { if (A[i] == 1) temp++; if (temp == k + 1) break; } int mid = i; temp = 0; for (i = 0; i < size; ++i) { if (A[i] == 1) temp++; if (temp == 2*k+1) break; } int end = i; while (end < size && A[begin] == A[mid] && A[mid] == A[end]) { begin++,mid++,end++; } if (end == size) return {begin-1,mid}; else return {-1,-1}; } }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |