Untitled
unknown
plain_text
3 months ago
1.2 kB
16
Indexable
class Solution {
public:
bool check(vector<int> &nums, int len) {
int n = nums.size();
int prevMax = -1;
for (int i = 0; i < n; i += len) {
int ch = 0;
int blockMin = nums[i], blockMax = nums[i];
for(int j = i; j < i + len - 1; j++){
if(nums[j] > nums[j+1]) ch++;
blockMin = min(blockMin, nums[j]);
blockMax = max(blockMax, nums[j]);
}
blockMin = min(blockMin, nums[i + len - 1]);
blockMax = max(blockMax, nums[i + len - 1]);
if(ch == 0){
}
else if(ch == 1){
if(nums[i] < nums[i+len-1]) return false;
}
else{
return false;
}
if(prevMax > blockMin) return false;
prevMax = blockMax;
}
return true;
}
int sortableIntegers(vector<int>& nums) {
int n = nums.size(), ans = 0;
for (int k = 1; k <= n; k++) {
if (n % k != 0) continue;
if (check(nums, k)) {
ans += k;
cout <<"k = "<<k<<endl;
}
}
return ans;
}
};Editor is loading...
Leave a Comment