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