Largest Permutation Discussions | Algorithms | HackerRank

Largest Permutation

  • + 0 comments

    C++, O(n*ln(n))

    vector<int> largestPermutation(int k, vector<int> arr) 
    {
        set<pair<int, int>, greater<pair<int, int>>> descValueToInd;
        int i = 0, n = (int)arr.size();
        for (i = 0; i < n; i++)
            descValueToInd.insert(make_pair(arr[i], i));
        for (i = 0; i < n; i++) {
            auto maxvi = *(descValueToInd.begin());
            descValueToInd.erase(descValueToInd.begin());
            if (arr[i] < maxvi.first) {
                descValueToInd.erase(make_pair(arr[i], i));
                descValueToInd.insert(make_pair(arr[i],maxvi.second));
                swap(arr[i], arr[maxvi.second]);
                if (--k <= 0) break;
            }
        }
        return arr;
    }