leetcode 實現陣列的旋轉

2021-10-11 10:43:39 字數 993 閱讀 3066

給定乙個陣列,將陣列中的元素向右移動 k 個位置,其中 k 是非負數。

示例 1:

input: [1,2,3,4,5,6,7]和k=3

output: [5,6,7,1,2,3,4]

解釋:向右旋轉 1 步:[7,1,2,3,4,5,6]

向右旋轉 2 步:[6,7,1,2,3,4,5]

向右旋轉 3 步:[5,6,7,1,2,3,4]

示例 2:

input: [-1,-100,3,99]和k=2

output: [3,99,-1,-100]

解釋:向右旋轉 1 步: [99,-1,-100,3]

向右旋轉 2 步: [3,99,-1,-100]

盡可能想出更多的解決方案,至少有三種不同的方法可以解決這個問題;

要求使用空間複雜度o(1)的原地演算法;

解題思路:

方法1從nums[0]開始,每次移動k的位置:即將nums[0]的值移動到nums[0+k],

為了避免超時,需要加乙個計數變數count,每次乙個位置移動成功之後就進行加1運算,

當滿足count的值大小等於陣列大小的時候,則證明已經完成旋轉.

方法2採用反轉的方法,先反轉前n-k個元素,再反轉後k個元素,最後將整個陣列反轉.

需要進過三次反轉.

#include #include #include using namespace std;

class solution

nums[i]=n1;

count++;}}

void rotatearray(vector& nums,int k)

};int main(int argc,char* ar**);

solution().rotatearray(nums,2);

for(auto& i:nums)

cout

}

LeetCode 陣列 旋轉陣列

給定乙個陣列,將陣列中的元素向右移動 k 個位置,其中 k 是非負數。示例 輸入 1,2,3,4,5,6,7 和 k 3 輸出 5,6,7,1,2,3,4 解釋 向右旋轉 1 步 7,1,2,3,4,5,6 向右旋轉 2 步 6,7,1,2,3,4,5 向右旋轉 3 步 5,6,7,1,2,3,4 ...

LeetCode 旋轉陣列

將包含n 個元素的陣列向右旋轉 k 步。例如,如果 n 7 k 3,給定陣列 1,2,3,4,5,6,7 向右旋轉後的結果為 5,6,7,1,2,3,4 注意 盡可能找到更多的解決方案,這裡最少有三種不同的方法解決這個問題。要求空間複雜度為 o 1 關聯的問題 反轉字串中的單詞 ii public ...

LeetCode 旋轉陣列

給定乙個陣列,將陣列中的元素向右移動 k 個位置,其中 k 是非負數。示例 1 輸入 1,2,3,4,5,6,7 和 k 3輸出 5,6,7,1,2,3,4 解釋 向右旋轉 1 步 7,1,2,3,4,5,6 向右旋轉 2 步 6,7,1,2,3,4,5 向右旋轉 3 步 5,6,7,1,2,3,4...