leetcode初級陣列之旋轉陣列

2021-08-26 08:55:58 字數 1149 閱讀 4912

給定乙個陣列,將陣列中的元素向右移動 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]

示例 2:

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

輸出: [3,99,-1,-100]

解釋:

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

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

說明:

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

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

void rotate(int* nums, int numssize, int k) 

nums[0] = tmp;

}}

void reverse(int* nums, int start, int end);

/*思路是在numssize-k處分割,前面的反轉,後面(包含numssize-k)也反轉,最後整個陣列在反轉

*具體例子:

*arr = 1 2 3 4 5 6 7

*k = 3

*從5開始分界

*前邊轉置為4 3 2 1

*後邊轉置為7 6 5

*這時整體為4 3 2 1 7 6 5

*再整體轉置一次:5 6 7 1 2 3 4

*/void rotate(int* nums, int numssize, int k)

void reverse(int* nums, int start, int end)

//這裡存在乙個問題,對於k=1且k是numssize的公約數的情況

//會陷入到乙個迴圈中去,不能正確的輸出

//比如說,輸入1,2,3,4,5,6,k=2

//輸出是3,2,1,4,1,6,不是正確的結果

//具體怎麼解決還沒有想出來!

}

leetcode初級陣列之 存在重複

給定乙個整數陣列,判斷是否存在重複元素。如果任何值在陣列中出現至少兩次,函式返回 true。如果陣列中每個元素都不相同,則返回 false。示例 1 輸入 1,2,3,1 輸出 true 示例 2 輸入 1,2,3,4 輸出 false 示例 3 輸入 1,1,1,3,3,4,3,2,4,2 輸出 ...

LeetCode初級 06 旋轉陣列

旋轉陣列 給定乙個陣列,將陣列中的元素向右移動 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...

LeetCode 探索 初級 陣列 加一 java

加一 給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存乙個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入 4,3,2,1 輸出 4...