手写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];
    }

posted @ 2025-03-13 22:21  Gold_stein  阅读(42)  评论(0)    收藏  举报