赞
踩
解题思路:
三次反转。
先反转一次,再根据 k 拆分成两部分各反转一次。
- class Solution {
- public void rotate(int[] nums, int k) {
- k %= nums.length;
- reverse(nums, 0, nums.length - 1);
- reverse(nums, 0, k - 1);
- reverse(nums, k, nums.length - 1);
- }
-
- public void reverse(int[] nums, int start, int end) {
- while (start < end) {
- int temp = nums[start];
- nums[start] = nums[end];
- nums[end] = temp;
- start++;
- end--;
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。