leetcode (Rotate Array)
阿新 • • 發佈:2018-11-24
Title:Rotate Array 189
Difficulty:Easy
原題leetcode地址:https://leetcode.com/problems/rotate-array/
1. 詳細講解見程式碼註釋,時間&空間複雜度如下:
時間複雜度:O(n),最長需要遍歷整個陣列的長度。
空間複雜度:O(1),沒有額外申請空間。
/** * 3次反轉 * 1. 反轉K之前的數 * 2. 反轉K之後的數 * 3. 反轉整個陣列 * 注意:題目給的K的大小可能比nums的長度大 * @param nums * @param k */ public static void rotate(int[] nums, int k) { int kk = k % nums.length; reverse(nums, 0, nums.length - kk - 1); reverse(nums, nums.length - kk, nums.length - 1); reverse(nums, 0, nums.length - 1); } private static void reverse(int nums[], int start, int end) { for (int i = start, j = end; i < j; i++, j--) { int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; } }