Untitled

 avatar
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