給定乙個陣列,將陣列中的元素向右移動 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]
class
solution
int[
] temp =
newint
[k];
int j =0;
for(int i = nums.length - k; i < nums.length; i++
)for
(int i = nums.length - k -
1; i >=
0; i--
)for
(int i =
0; i < temp.length; i++)}
}
上面**是我寫的,把要先調換的幾個數放到乙個temp陣列裡
然後然後面的數個k放到後面
再把temp裡的數放到前面陣列裡去
class
solution
nums[0]
= temp;
}}
/**
* 翻轉
* 時間複雜度:o(n)
* 空間複雜度:o(1)
*/public
void
rotate_2
(int[
] nums, int k)
private
void
reverse
(int[
] nums, int start, int end)}/*
*把陣列從k處分,進行三輪調轉
*第一次全陣列調轉
*第二次k-1前面的調轉
*第三次k後面的調轉
*/
/**
* 迴圈交換
* 時間複雜度:o(n)
* 空間複雜度:o(1)
*/public
void
rotate_3
(int[
] nums, int k)}}
/* *如1,2,3,4,5,6,7 k = 3
*第一次 排成5,6,7,4,1,2,3
*第二次便是 5,6,7,1,4,2,3->
* 5,6,7,1,2,4,3->
* 5,6,7,1,2,3,4->
*/private
void
swap
(int[
] nums, int i, int j)
/**
* 遞迴交換
* 時間複雜度:o(n)
* 空間複雜度:o(n/k)
*/public
void
rotate
(int[
] nums, int k)
private
void
recursiveswap
(int[
] nums, int k, int start, int length)
recursiveswap
(nums, k, start + k, length - k);}
}private
void
swap
(int[
] nums, int i, int j)
}
class
solution
}
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...
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,...