手写std::rotate
手写std::rotate
std::rotate
接受三个参数l, mid, r.将输入数组进行翻转。
将[l, mid)和[mid, r)位置互换。
输入[1, 2, 3, 4, 5](下标从零开始)
经过rotate(0, 3, 5)之后,数组变为:
[4, 5, 1, 2, 3]
手动实现
将[l, r]与[r+1, k]互换位置(即把[l,r]插入到k的后面)
void swapSubarrays(vector<char>& q, int l, int r, int k) {
    // 1. 备份原始数据
    vector<char> backup = q;
    // 2. 移动绿色部分 [r+1, k] 到位置 l
    int y = l;
    for (int x = r + 1; x <= k; x++, y++) {
        q[y] = backup[x];
    }
    // 3. 移动红色部分 [l, r] 到后续位置
    for (int x = l; x <= r; x++, y++) {
        q[y] = backup[x];
    }

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号