LeetCode初級演算法 陣列 旋轉陣列

2021-09-24 14:54:12 字數 1101 閱讀 2858

以下是本人的c++演算法學習筆記,記錄在部落格上以供自己隨時查閱

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

盡可能想出更多的解決方案,至少有三種不同的方法可以解決這個問題。要求使用空間複雜度為 o(1) 的原地演算法。

我先在vs2017上整體實現該功能,再將關鍵**在leetcode上執行

我比較笨,所以只學會了兩種方法,將這兩種方法做下筆記,等第二遍刷題的時候再回來對比。

方法一:每次把最後乙個元素取出,前面元素整體後移一位,再把取出的最後一位元素放到第一位,迴圈k次

void rotate(vector& nums, int k)

nums[0] = temp;

}}

方法二:1.將陣列翻轉 2.翻轉前k個資料元素 3.翻轉剩餘的資料元素

void rotate02(vector&nums, int k)

整體**:

#include#include#includeusing namespace std;

//方法一 每次把最後乙個元素取出,前面元素整體後移一位,再把取出

//的最後一位元素放到第一位,迴圈k次

void rotate(vector& nums, int k)

nums[0] = temp; }}

//方法二:陣列全部反轉,然後再依次反轉前k個資料和最後n-k個資料

void rotate02(vector&nums, int k)

int main()

; vectornums(a, a + 6);

//rotate(nums, 2);

rotate02(nums, 2);

for (int i = 0; i < nums.size(); i++)

cout << endl;

system("pause");

return 0;

}

leetcode 初級演算法 陣列

給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度2,並且原陣列 nums 的前兩個元素被修改為1,2...

Leetcode 初級演算法 陣列

給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1...

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 輸入 ...