程式設計之美2 17 陣列迴圈移位

2021-06-07 03:41:44 字數 538 閱讀 7437

string rightshift1(string &s, int n, int k)

return s;

}

string rightshift2(string &s, int n, int k)

return s;

}

//對於abcd1234,若迴圈右移4位得到的1234abcd,

//可以看出有兩部分是沒有變的一部分是abcd,另一部分是1234

//所以可以通過以下三步完成迴圈移位:

//1、逆序排列abcd,得到dcba1234;

//2、逆序排列1234,得到dcba4321,

//3、逆序排列dcba4321,得到1234abcd;

void reverse(string &s, int b, int e)

}string rightshift3(string &s, int n, int k)

程式設計之美2 17 陣列迴圈移位

題目描述 設計乙個演算法,把乙個含有n個元素的陣列迴圈右移k位,要求時間複雜度為o n 且只允許使用兩個附加變數,如abcd1234迴圈右移三位,則為 abcd11234 4abcd123 34abcd12 234abcd1 思路一 暴力解法,一步步來,每次迴圈移位一次,移k n次,此時複雜度為o ...

程式設計之美 2 17 陣列移位迴圈

設計乙個演算法,把乙個含有n個元素的陣列迴圈右移k位,要求時間複雜度為o n 且只允許使用兩個附加變數。方法 將陣列a 含n個元素 右移k位,相當於把a分為兩部分,前 n k 個元素a1和後k個元素a2,右移的過程是將兩部分交換位置,即原a a1 a2,移位後為a a2 a1,a1,a2內部的元素順...

程式設計之美2 17 陣列迴圈移位

問題描述 設計乙個演算法,把乙個含有n元素的陣列迴圈左移或者右移k位。解決方法 1.暴力解法 o kn 2.顛倒位置 o n 具體思路和 1.暴力解法 o kn 思路 迴圈k次,每次移動一位 1 右移 2void s1 int a,int n,intk 3 12 a 0 t 13 14 1 左移 2...